在wordpress中的常规设置TAB中添加自定义字段

时间:2013-10-14 06:00:02

标签: php mysql wordpress image-uploading

我想在wordpress中的常规设置TAB中添加自定义字段。 这是wordpress默认拥有的当前字段。

  1. 网站标题
  2. 标记行
  3. Wordpress地址网址 ...等
  4. 我想添加一个自定义字段,我希望有一个图片上传字段。

    为此我必须编辑 options-general.php , 的 options.php 下, 的 general-template.php 下, 我必须在我的数据库 wp-options 表中插入一个条目

    现在,当我使用简单的 input type as text 对其进行测试时,效果很好。 但是当我为我的徽标上传设置 input type as file 时,它不起作用,这是我的代码。 的 options-general.php

    <tr valign="top">
    <th scope="row"><label for="logo"><?php _e('Logo') ?></label></th>
    <td><input name="file" type="file"/></td>
    </tr>
    

    正如您所看到的,我已将我的图片字段放在我的博客说明字段下方,此表格的操作将我带到 options.php 。 这是我的 option.php

    if ( is_multisite() && !is_super_admin() && 'update' != $action )
        wp_die(__('Cheatin&#8217; uh?'));
    /* image upload function goes here */
    
    if($_POST['submit']){
    
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 20000)
    && in_array($extension, $allowedExts))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    
        if (file_exists("images/logo/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],"images/logo/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
    }
        /* image upload function ends here */
    

    上面我添加了简单的图片上传脚本,一些不起作用,文件也没有上传到目录。

    核心PHP代码是否适用于WP环境或者我缺少某些东西,请建议。

2 个答案:

答案 0 :(得分:3)

停止机器!

你是_doing_it_wrong(),虽然这个功能没有检测到你在做什么:) 我们不会触及核心文件we do plugins。请将您的WP恢复到新的状态。


回答问题标题

  

在wordpress的常规设置TAB中添加自定义字段

关注WordPress Answers的示例。关键功能是add_settings_field,现在它添加了一个完整的WP编辑器,但可以调整它以显示任何类型的字段。解释设置API的nice article

<?php
/**
 * Plugin Name: My Custom General Setting
 */

add_action( 'admin_init', 'wpse_57647_register_settings' );

/* 
 * Register settings 
 */
function wpse_57647_register_settings() 
{
    register_setting( 
        'general', 
        'html_guidelines_message',
        'esc_html' // <--- Customize this if there are multiple fields
    );
    add_settings_section( 
        'site-guide', 
        'Publishing Guidelines', 
        '__return_false', 
        'general' 
    );
    add_settings_field( 
        'html_guidelines_message', 
        'Enter custom message', 
        'wpse_57647_print_text_editor', 
        'general', 
        'site-guide' 
    );
}    

/* 
 * Print settings field content 
 */
function wpse_57647_print_text_editor() 
{
    $the_guides = html_entity_decode( get_option( 'html_guidelines_message' ) );
    echo wp_editor( 
        $the_guides, 
        'sitepublishingguidelines', 
        array( 'textarea_name' => 'html_guidelines_message' ) 
    );
}

resulting settings

答案 1 :(得分:0)

如果您需要向网站添加选项,但实际上并不需要将其放置在自己的页面上。您可能可以将其添加到现有设置页面之一。以下是在“常规设置”页面上添加选项的方法。

在这种情况下,我要添加一个“最喜欢的颜色”字段,可能不是最好的例子,所以继续进行更改。

$new_general_setting = new new_general_setting();

class new_general_setting {
    function new_general_setting( ) {
        add_filter( 'admin_init' , array( &$this , 'register_fields' ) );
    }
    function register_fields() {
        register_setting( 'general', 'favorite_color', 'esc_attr' );
        add_settings_field('fav_color', '<label for="favorite_color">'.__('Favorite Color?' , 'favorite_color' ).'</label>' , array(&$this, 'fields_html') , 'general' );
    }
    function fields_html() {
        $value = get_option( 'favorite_color', '' );
        echo '<input type="text" id="favorite_color" name="favorite_color" value="' . $value . '" />';
    }
}

register_setting()函数的第三个参数是应该用于验证输入数据的函数的名称,因此请根据需要对其进行自定义。