定制器选项是否仅限于特定用户角色?

时间:2020-11-03 作者:jockebq

是否可以将特定自定义程序选项的选择限制为用户角色?

现在我有一个自定义控件:

$wp_customize->add_control( \'checkin[theme]\', array(
\'label\' => __(\'Theme\', \'greet\'),
// \'description\' => \'Set theme\',
\'section\' => \'checkin\',
\'type\' => \'select\',
\'choices\'  => array(
        \'theme-1\' => \'Background\',
        \'theme-2\' => \'Stars (Live)\',
        \'theme-3\' => \'Gradient (Live)\',
    ),
) );
我想限制theme-2theme-3 仅对特定用户角色可用,对其他角色不可用或灰显/禁用。

如何使用数组执行此操作?

1 个回复
SO网友:Aristeides

有两种方法可以做到这一点。

注册设置时,可以使用capability:

$wp_customize->add_setting(
    \'display_excerpt_or_full_post\',
    array(
        \'capability\'        => \'edit_theme_options\',
        \'default\'           => \'excerpt\',
        \'sanitize_callback\' => function( $value ) {
            return \'excerpt\' === $value || \'full\' === $value ? $value : \'excerpt\';
        },
    )
);
注册控件时,可以使用render_callback 用于确定是否显示控件的参数:
$wp_customize->add_control( \'checkin[theme]\', array(
    \'label\' => __(\'Theme\', \'greet\'),
    \'section\' => \'checkin\',
    \'type\' => \'select\',
    \'choices\'  => array(
            \'theme-1\' => \'Background\',
            \'theme-2\' => \'Stars (Live)\',
            \'theme-3\' => \'Gradient (Live)\',
        ),
    ),
    \'render_callback\' => function() {
        return current_user_can( \'edit_posts\' );
    },
);
请注意,这些是完全不同的。使用capability 设置中的参数将完全跳过控件,并且不会将其添加到自定义程序API中。使用render_callback 参数时,控件仍将添加到自定义程序中,并且它将从API中可用,只是将其隐藏。如果隐藏(但仍在API中公开),我可以打开控制台并执行此操作以显示它-即使您已隐藏它:

wp.customize.control( \'checkin[theme]\' ).activate()

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register