创建选项以允许用户选择我的插件内容将在其上显示的页面

时间:2013-11-01 作者:Russ

我有一个插件的选项页面,但似乎不知道如何创建一个选项,允许管理员选择一个显示插件内容的页面。

有没有人举过这样做的例子?

编辑:我创建了一个插件,并有一个小部件来搜索插件的内容。然而,我需要小部件发布到显示插件内容的页面。由于小部件位于侧栏上,可以从任何页面提交,因此我需要能够检测插件内容显示在哪个页面上,并将其发送到该页面。1、检测给定页面上的短代码,并使用该短代码。或2。从设置页面创建一个选项,允许管理员选择插件内容将显示在哪个页面上,并删除短代码。我希望这能澄清问题。

我的插件有一个设置页面,我只是不知道如何获得可用页面的列表,以及如何在wp\\u options表中保存/更新选项。

2 个回复
最合适的回答,由SO网友:Milo 整理而成

这是一个快速选项页面,您可以使用get_pages 作用这个Settings API 负责为您保存选项。然后您可以使用get_option 在模板中加载选项数组,以及get_post 加载与保存在选项中的ID关联的post数据。

add_action( \'admin_init\', \'russ_options_init\' );
add_action( \'admin_menu\', \'russ_options_page\' );

function russ_options_init(){
    register_setting(
        \'russ_options_group\',
        \'russ_options\',
        \'russ_options_validate\'
    );
}

function russ_options_page() {
    add_options_page(
        \'Russ Options\',
        \'Russ Options\',
        \'manage_options\',
        \'russ_options\',
        \'russ_render_options\'
    );
}

function russ_render_options() {
    ?>
    <div class="wrap">
        <form method="post" action="options.php">
            <?php
            settings_fields( \'russ_options_group\' );
            $options = get_option( \'russ_options\' );
            ?>
            <table class="form-table">
                <tr valign="top"><th scope="row">Choose a page</th>
                    <td>
                        <select name="russ_options[page_id]">
                            <?php
                            if( $pages = get_pages() ){
                                foreach( $pages as $page ){
                                    echo \'<option value="\' . $page->ID . \'" \' . selected( $page->ID, $options[\'page_id\'] ) . \'>\' . $page->post_title . \'</option>\';
                                }
                            }
                            ?>
                        </select>
                    </td>
                </tr>
            </table>
            <p class="submit">
                <input type="submit" class="button-primary" value="<?php _e(\'Save Changes\') ?>" />
            </p>
        </form>
    </div>
    <?php   
}

function russ_options_validate( $input ) {
    // do some validation here if necessary
    return $input;
}

SO网友:tyomitch

与@Milo建议的重新实现下拉列表相比,它更易于使用

wp_dropdown_pages( array( \'name\' => \'russ_options[page_id]\', \'selected\' => $options[\'page_id\'] ) );
--如中所述https://developer.wordpress.org/reference/functions/wp_dropdown_pages/

结束

相关推荐

Multi Upload In Theme Options

我需要在主题选项页面上使用WordPress媒体上传。它需要能够在一个页面上有多个字段。我在网站上看到了一些使用搜索的东西,但没有最新的,也没有我能找到的工作。有人能告诉我一个简单的方法吗。确实希望使用新的库样式,从媒体库中选择图片,或选择上载。