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

扎克·史密斯

我有以下关于如何保存简单文本输入字段的来自 WordPress 法典的代码。它工作正常。但我现在正在尝试保存一个选择选项下拉列表,但无法弄清楚我在这里遗漏了什么。似乎它在我第一次从下拉菜单中点击保存时保存,但是当我尝试编辑值以选择另一个选项并保存它时,它永远不会保存。

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

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 }
火雾

使用此功能这只是一个示例,将选择选项下拉列表保存在 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();

检索此值

$dropdown_option = get_option( 'dropdown_option_setting_option_name' ); // Array
$dropdown_value =  $dropdown_option ['dropdown_option_0']; // Option value

如果你需要一个简单的方法来做到这一点

示例 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
}
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从foreach循环中保存选择选项列表

来自分类Dev

如何从foreach循环中保存选择选项列表

来自分类Dev

如何链接到表单选择选项下拉列表

来自分类Dev

如何在Angular Directive中使用选择选项下拉菜单?

来自分类Dev

如何通过ajax post发送选择选项下拉列表的选项值(而不是里面的html文本)?

来自分类Dev

如何从选择选项下拉列表中获取值并在switch语句中使用该值

来自分类Dev

ng-options未填充选择选项下拉列表

来自分类Dev

如何使用 Angular 中的反应形式获取选择选项下拉文本值

来自分类Dev

如何在PHP中保存从数据库加载的选择选项

来自分类Dev

如何使用jQuery在localStorage中保存选择选项?

来自分类Dev

如何在 Android 表单中进行过滤的类似选择选项的下拉列表?

来自分类Dev

如何重新填充角度引物下拉列表的选择选项

来自分类Dev

在 3 个选择选项下拉列表之间使用 ngModel 绑定数据时遇到问题。(角)

来自分类Dev

如何在HTML /纯JS中保存选择下拉菜单选项?

来自分类Dev

如何在HTML /纯JS中保存选择下拉菜单选项?

来自分类Dev

下拉选择选项以过滤Django列表

来自分类Dev

硒选择选项的下拉列表

来自分类Dev

如何在HTML中保留空间选择选项列表<option value ='hi this'> hi </ option>

来自分类Dev

angularjs 中未选择默认选项下拉列表

来自分类Dev

如何在asp.net中保存下拉列表选择的索引?

来自分类Dev

选择后如何保存下拉列表中选择的选项

来自分类Dev

根据表格内容创建选择选项下拉菜单

来自分类Dev

使用JavaScript动态生成的选择选项下拉菜单

来自分类Dev

用于多个选择选项下拉菜单的本地存储

来自分类Dev

使用JavaScript动态生成的选择选项下拉菜单

来自分类Dev

在HTML选择选项下拉菜单中添加输入功能

来自分类Dev

引导程序选择选项下拉箭头未显示

来自分类Dev

如何使用e.target.value在javascript中保存选择选项的值

来自分类Dev

如何在Wordpress选项中保存简码的内容?

Related 相关文章

  1. 1

    如何从foreach循环中保存选择选项列表

  2. 2

    如何从foreach循环中保存选择选项列表

  3. 3

    如何链接到表单选择选项下拉列表

  4. 4

    如何在Angular Directive中使用选择选项下拉菜单?

  5. 5

    如何通过ajax post发送选择选项下拉列表的选项值(而不是里面的html文本)?

  6. 6

    如何从选择选项下拉列表中获取值并在switch语句中使用该值

  7. 7

    ng-options未填充选择选项下拉列表

  8. 8

    如何使用 Angular 中的反应形式获取选择选项下拉文本值

  9. 9

    如何在PHP中保存从数据库加载的选择选项

  10. 10

    如何使用jQuery在localStorage中保存选择选项?

  11. 11

    如何在 Android 表单中进行过滤的类似选择选项的下拉列表?

  12. 12

    如何重新填充角度引物下拉列表的选择选项

  13. 13

    在 3 个选择选项下拉列表之间使用 ngModel 绑定数据时遇到问题。(角)

  14. 14

    如何在HTML /纯JS中保存选择下拉菜单选项?

  15. 15

    如何在HTML /纯JS中保存选择下拉菜单选项?

  16. 16

    下拉选择选项以过滤Django列表

  17. 17

    硒选择选项的下拉列表

  18. 18

    如何在HTML中保留空间选择选项列表<option value ='hi this'> hi </ option>

  19. 19

    angularjs 中未选择默认选项下拉列表

  20. 20

    如何在asp.net中保存下拉列表选择的索引?

  21. 21

    选择后如何保存下拉列表中选择的选项

  22. 22

    根据表格内容创建选择选项下拉菜单

  23. 23

    使用JavaScript动态生成的选择选项下拉菜单

  24. 24

    用于多个选择选项下拉菜单的本地存储

  25. 25

    使用JavaScript动态生成的选择选项下拉菜单

  26. 26

    在HTML选择选项下拉菜单中添加输入功能

  27. 27

    引导程序选择选项下拉箭头未显示

  28. 28

    如何使用e.target.value在javascript中保存选择选项的值

  29. 29

    如何在Wordpress选项中保存简码的内容?

热门标签

归档