Extend plugin options page

时间:2016-12-27 作者:R99Photography

我最近安装了Post Views计数器插件,它在Wordpress设置菜单下创建了一个选项页面。现在,我想通过添加更多选项来扩展插件功能。它将由我创建的另一个插件完成。目标是将我自己的选项直接添加到其他选项所在的页面中。我不想创建任何顶级菜单、设置下的子菜单或任何其他内容。我该怎么做?

谢谢你,卡多

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

如果第三方插件(您要扩展的插件)使用设置API,如果您现在打开由第三方插件定义的选项页面和选项组,则可以添加新的设置字段。也只需使用设置:

首先add_setting_field() 您可以向第三个插件定义的任何设置部分添加新字段register_setting() 您可以在插件定义的选项组中注册新设置一个非常简单的例子:

add_action( \'admin_init\', \'cyb_add_settings_field_to_plugin\' );
function cyb_add_settings_field_to_plugin() {

    add_settings_field(
        \'some_id\',
        \'Some title\',
        \'cyb_field_callback\',
        \'plugin-settins-page\', // Settings page defined by the third party plugin
        \'plugin-settings-section\', // Section defined by the third party plugin
        array()
    );

    register_setting(
        \'option-group\', // Options group defined by third party plugin
        \'my-option-name\', // Custom option name
        \'cyb_sanitize_callback\' // Sanitize
    );

}

function cyb_field_callback() {
    $value = get_option( \'my-option-name\' );
    ?>
    <input type="text" id="some_id" name="my-option-name" value="<?php echo esc_attr( $value ); ?>" />
    <?php
}

function cyb_sanitize_callback( $inputs ) {
    // Do sanitization of the the inputs
    return $inputs;
}
如果愿意,还可以添加新的部分:

add_action( \'admin_init\', \'cyb_add_settings_field_to_plugin\' );
function cyb_add_settings_field_to_plugin() {

    add_settings_section(
        \'new-settings-section\',
        \'Settings Section Title\',
        \'cyb_print_section_info\', // Callback
        \'plugin-settins-page\' // Settings page defined by the third party plugin
    );  
    add_settings_field(
        \'some_id\',
        \'Some title\',
        \'cyb_field_callback\',
        \'plugin-settins-page\', // Settings page defined by the third party plugin
        \'new-settings-section\', // My custom section defined above
        array()
    );
    register_setting(
        \'option-group\', // Options group defined by third party plugin
        \'my-option-name\', // Option name
        \'cyb_sanitize_callback\' // Sanitize
    );
}

function cyb_print_section_info() {
    echo \'Section info\';
}

function cyb_field_callback() {
    $value = get_option( \'my-option-name\' );
    ?>
    <input type="text" id="some_id" name="my-option-name" value="<?php echo esc_attr( $value ); ?>" />
    <?php
}

function cyb_sanitize_callback( $inputs ) {
    // Do sanitization of the the inputs
    return $inputs;
}

相关推荐

Huge wp_options table

我有一个WP网站的问题。由于没有更多可用磁盘空间,网站崩溃。搜索时,我检测到wp\\U选项表大小为12GB,但大约只有1100行:有什么想法吗?提前感谢[UPDATE 1]如果我导出wp\\U选项表,拖放并导入,大小将减少到9,7mb:我没有机会用优化表OPTIMIZE TABLE wp_options 但如果再发生的话我会试试的[UPDATE 2]问题仍然存在。我试着OPTIMIZE TABLE wp_options;无结果: