Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在wordpress插件中保存选择选项下拉列表_Php_Wordpress_Select - Fatal编程技术网

Php 如何在wordpress插件中保存选择选项下拉列表

Php 如何在wordpress插件中保存选择选项下拉列表,php,wordpress,select,Php,Wordpress,Select,以下代码取自WordPress codex,介绍如何保存简单的文本输入字段。它很好用。但我现在正试图保存一个选择选项下拉列表,无法找出我在这里遗漏了什么。第一次单击下拉菜单中的save时,它似乎会保存,但当我试图编辑该值以选择另一个选项并保存它时,它永远不会保存 我的另一个问题是,为什么在运行时没有将值打印到屏幕上 testing value saved: <?=esc_attr( get_option('location_one_option') ); ?> 保存的测试值: 当

以下代码取自WordPress codex,介绍如何保存简单的文本输入字段。它很好用。但我现在正试图保存一个选择选项下拉列表,无法找出我在这里遗漏了什么。第一次单击下拉菜单中的save时,它似乎会保存,但当我试图编辑该值以选择另一个选项并保存它时,它永远不会保存

我的另一个问题是,为什么在运行时没有将值打印到屏幕上

testing value saved: <?=esc_attr( get_option('location_one_option') ); ?>
保存的测试值:
当前插件代码如下:

// create custom plugin settings menu
function sidebar_posts_create_menu() {
    //create new top-level menu
    add_menu_page('Sidebar Posts', 'Sidebar Post Settings', 'administrator', __FILE__, 'sidebar_posts_settings_page' );

    //call register settings function
    add_action( 'admin_init', 'register_sidebar_posts_settings' );
}
add_action('admin_menu', 'sidebar_posts_create_menu');

//register our settings
function register_sidebar_posts_settings() {
    //register our settings
    register_setting( 'sidebar-posts-settings-group', 'location_one_option' );
    register_setting( 'sidebar-posts-settings-group', 'new_option_name' );
}

//register settings page view
function sidebar_posts_settings_page() {
    ?>
    <div class="wrap">
        <h1>Sidebar Posts Settings</h1>
        <p>Select up to six posts to show in six different locations on the sidebar. Have fun!</p>

        <form method="post" action="options.php">
            <?php settings_fields( 'sidebar-posts-settings-group' ); ?>
            <?php do_settings_sections( 'sidebar-posts-settings-group' ); ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">New Option Name</th>
                    <td><input type="text" name="new_option_name" value="<?php echo esc_attr( get_option('new_option_name') ); ?>" /></td>
                </tr>
<!--the above simple text field saves the data perfectly-->

                <?php
                $your_query = new WP_Query( 'posts_per_page=-1' ); ?>
                                <label>Location One Post</label><br />
            <select name="location_one_option">
                <option value="" selected="selected">Select a post</option>
                <?php while ( $your_query->have_posts() ) : $your_query->the_post(); ?>
                <option value="<?=esc_attr( get_option('location_one_option') ); ?>" <?php selected( get_option('location_one_option'), get_option('location_one_option') ); ?>>
                    <?=the_title(); ?>
                </option>
                <? endwhile; ?>
            </select>
            <? wp_reset_postdata(); ?><br /><br />
            testing value saved: <?=esc_attr( get_option('location_one_option') ); ?>

            </table>
            <?php submit_button(); ?>
        </form>
    </div>
<?php }
//创建自定义插件设置菜单
函数侧栏发布创建菜单(){
//创建新的顶级菜单
添加菜单页面(“边栏帖子”、“边栏帖子设置”、“管理员”、“文件”、“边栏帖子设置页面”);
//呼叫寄存器设置功能
添加操作('admin_init','register_sidebar_posts_settings');
}
添加操作(“管理”菜单、“侧栏”帖子“创建”菜单);
//注册我们的设置
功能寄存器\侧栏\发布\设置(){
//注册我们的设置
注册设置(“侧边栏张贴设置组”、“位置设置选项”);
注册设置(“边栏张贴设置组”、“新选项名称”);
}
//注册设置页面视图
功能侧栏\发布\设置\页面(){
?>
边栏帖子设置
选择最多六篇文章,在侧边栏的六个不同位置显示。祝你玩得开心

新选项名
使用此功能这只是一个例子,可以在wordpress插件中保存一个选择选项下拉列表,您可以根据需要使用它

示例1

class DropdownOptionSetting {
    private $dropdown_option_setting_options;

    public function __construct() {
        add_action( 'admin_menu', array( $this, 'dropdown_option_setting_add_plugin_page' ) );
        add_action( 'admin_init', array( $this, 'dropdown_option_setting_page_init' ) );
    }

    public function dropdown_option_setting_add_plugin_page() {
        add_options_page(
            'Dropdown Option Setting', // page_title
            'Dropdown Option Setting', // menu_title
            'manage_options', // capability
            'dropdown-option-setting', // menu_slug
            array( $this, 'dropdown_option_setting_create_admin_page' ) // function
        );
    }

    public function dropdown_option_setting_create_admin_page() {
        $this->dropdown_option_setting_options = get_option( 'dropdown_option_setting_option_name' ); ?>

        <div class="wrap">
            <h2>Dropdown Option Setting</h2>
            <p></p>
            <?php settings_errors(); ?>

            <form method="post" action="options.php">
                <?php
                    settings_fields( 'dropdown_option_setting_option_group' );
                    do_settings_sections( 'dropdown-option-setting-admin' );
                    submit_button();
                ?>
            </form>
        </div>
    <?php }

    public function dropdown_option_setting_page_init() {
        register_setting(
            'dropdown_option_setting_option_group', // option_group
            'dropdown_option_setting_option_name', // option_name
            array( $this, 'dropdown_option_setting_sanitize' ) // sanitize_callback
        );

        add_settings_section(
            'dropdown_option_setting_setting_section', // id
            'Settings', // title
            array( $this, 'dropdown_option_setting_section_info' ), // callback
            'dropdown-option-setting-admin' // page
        );

        add_settings_field(
            'dropdown_option_0', // id
            'Dropdown Option', // title
            array( $this, 'dropdown_option_0_callback' ), // callback
            'dropdown-option-setting-admin', // page
            'dropdown_option_setting_setting_section' // section
        );
    }

    public function dropdown_option_setting_sanitize($input) {
        $sanitary_values = array();
        if ( isset( $input['dropdown_option_0'] ) ) {
            $sanitary_values['dropdown_option_0'] = $input['dropdown_option_0'];
        }

        return $sanitary_values;
    }

    public function dropdown_option_setting_section_info() {

    }

    public function dropdown_option_0_callback() {
        ?> <select name="dropdown_option_setting_option_name[dropdown_option_0]" id="dropdown_option_0">
            <?php $selected = (isset( $this->dropdown_option_setting_options['dropdown_option_0'] ) && $this->dropdown_option_setting_options['dropdown_option_0'] === 'option-one') ? 'selected' : '' ; ?>
            <option value="option-one" <?php echo $selected; ?>>Option One</option>
            <?php $selected = (isset( $this->dropdown_option_setting_options['dropdown_option_0'] ) && $this->dropdown_option_setting_options['dropdown_option_0'] === 'option-two') ? 'selected' : '' ; ?>
            <option value="option-two" <?php echo $selected; ?>>Option Two</option>
            <?php $selected = (isset( $this->dropdown_option_setting_options['dropdown_option_0'] ) && $this->dropdown_option_setting_options['dropdown_option_0'] === 'option-three') ? 'selected' : '' ; ?>
            <option value="option-three" <?php echo $selected; ?>>Option Three</option>
        </select> <?php
    }

}
if ( is_admin() )
    $dropdown_option_setting = new DropdownOptionSetting();
如果您需要一种简单的方法来执行此操作

示例2

add_action( 'admin_init', 'Dropdown_settings_init' );

function Dropdown_settings_init(  ) { 
    register_setting( 'pluginPage', 'dropdown_settings' );
    add_settings_section(
        'Dropdown_pluginPage_section', 
        __( 'Your section description', 'dropdown' ), 
        'Dropdown_settings_section_callback', 
        'pluginPage'
    );

    add_settings_field( 
        'select_field_0', 
        __( 'Settings field description', 'dropdown' ), 
        'Dropdown_select_field_render', 
        'pluginPage', 
        'Dropdown_pluginPage_section' 
    );
}


function Dropdown_select_field_render(  ) { 
    $options = get_option( 'dropdown_settings' );
    ?>
    <select name='dropdown_settings[select_field_0]'>
        <option value='1' <?php selected( $options['select_field_0'], 1 ); ?>>Option 1</option>
        <option value='2' <?php selected( $options['select_field_0'], 2 ); ?>>Option 2</option>
        <option value='3' <?php selected( $options['select_field_0'], 3 ); ?>>Option 3</option>
        <option value='4' <?php selected( $options['select_field_0'], 4 ); ?>>Option 4</option>
    </select>
<?php
}


function Dropdown_settings_section_callback(  ) { 
    echo __( 'This section description', 'dropdown' );
}


function Dropdown_options_page(  ) { 
    ?>
    <form action='options.php' method='post'>
        <h2>Dropdown</h2>
        <?php
        settings_fields( 'pluginPage' );
        do_settings_sections( 'pluginPage' );
        submit_button();
        ?>
    </form>
    <?php
}
?>
add_action('admin_init','Dropdown_settings_init');
函数下拉列表\u设置\u初始化(){
注册设置(“插件页面”、“下拉设置”);
添加\u设置\u部分(
“下拉插件页面部分”,
__(“您的章节描述”、“下拉列表”),
'下拉菜单\u设置\u节\u回调',
“插件页”
);
添加设置字段(
'选择\u字段\u 0',
__(“设置字段说明”、“下拉列表”),
'下拉菜单\选择\字段\渲染',
“插件页”,
“下拉插件页面部分”
);
}
函数下拉列表\选择\字段\渲染(){
$options=get_选项(“下拉设置”);
?>
>选择2
>选择4
下拉列表
add_action( 'admin_init', 'Dropdown_settings_init' );

function Dropdown_settings_init(  ) { 
    register_setting( 'pluginPage', 'dropdown_settings' );
    add_settings_section(
        'Dropdown_pluginPage_section', 
        __( 'Your section description', 'dropdown' ), 
        'Dropdown_settings_section_callback', 
        'pluginPage'
    );

    add_settings_field( 
        'select_field_0', 
        __( 'Settings field description', 'dropdown' ), 
        'Dropdown_select_field_render', 
        'pluginPage', 
        'Dropdown_pluginPage_section' 
    );
}


function Dropdown_select_field_render(  ) { 
    $options = get_option( 'dropdown_settings' );
    ?>
    <select name='dropdown_settings[select_field_0]'>
        <option value='1' <?php selected( $options['select_field_0'], 1 ); ?>>Option 1</option>
        <option value='2' <?php selected( $options['select_field_0'], 2 ); ?>>Option 2</option>
        <option value='3' <?php selected( $options['select_field_0'], 3 ); ?>>Option 3</option>
        <option value='4' <?php selected( $options['select_field_0'], 4 ); ?>>Option 4</option>
    </select>
<?php
}


function Dropdown_settings_section_callback(  ) { 
    echo __( 'This section description', 'dropdown' );
}


function Dropdown_options_page(  ) { 
    ?>
    <form action='options.php' method='post'>
        <h2>Dropdown</h2>
        <?php
        settings_fields( 'pluginPage' );
        do_settings_sections( 'pluginPage' );
        submit_button();
        ?>
    </form>
    <?php
}
?>