首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress SEO插件只对特定用户可见

WordPress SEO插件只对特定用户可见
EN

Stack Overflow用户
提问于 2014-09-03 22:51:31
回答 4查看 1.3K关注 0票数 0

我正在WordPress中使用Yoast插件,并想知道是否有一种方法可以使它只对db或functions.php文件中的一个特定用户可见?不是角色,是真正的用户。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-04 01:31:57

我尝试了一个通用的解决方案,简单地添加“插件名称”并禁用它,但失败了。

但是,为了只向特定用户(ID等于2)显示WPSEO,以下工作如下:

代码语言:javascript
复制
add_action( 'plugins_loaded', 'seo_so_25654837' );

function seo_so_25654837() 
{
    if ( '2' ==  get_current_user_id() )
        return;

    remove_action( 'plugins_loaded', 'wpseo_admin_init', 15 );
}

不要将代码添加到functions.php中,而是将其用作正常插件

从管理栏中删除SEO菜单还需要以下内容:

代码语言:javascript
复制
add_action( 'wp_before_admin_bar_render', 'bar_so_25654837' );

function bar_so_25654837() 
{
    if ( '2' ==  get_current_user_id() )
        return;

    global $wp_admin_bar;
    $nodes = $wp_admin_bar->get_nodes();

    foreach( $nodes as $node )
    {
        if( !$node->parent )
        {
            if( 'wpseo-menu' === $node->id )
                $wp_admin_bar->remove_menu( $node->id );
        }           
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-09-04 00:04:12

您可以连接到pre_current_active_plugins,以便在表显示之前从表中删除元素。在函数中使用get_current_user_id()可以让您有选择地隐藏插件。

代码语言:javascript
复制
function hide_plugins_by_user( $all_plugins=false ) {
    global $wp_list_table;

    // if the current user ID is not 1, hide it.
    if ( 1 != get_current_user_id() ){
        // the active plugins from the table
        $plugins = $wp_list_table->items;
        // loop through them
        foreach ( $plugins as $key => $val ) {
            // use the dir + filename of the plugin to hide
            if ( $key == 'plugindir/plugin.php' ) {
                unset( $wp_list_table->items[$key] );
            }
        }
    }
}
add_action( 'pre_current_active_plugins', 'hide_plugins_by_user' );
票数 0
EN

Stack Overflow用户

发布于 2016-02-20 10:35:41

这段代码运行良好(希斯洛普可以获得学分):

代码语言:javascript
复制
// Returns true if user has specific role 
function check_user_role( $role, $user_id = null ) {
    if ( is_numeric( $user_id ) )
        $user = get_userdata( $user_id );
    else
        $user = wp_get_current_user();
    if ( empty( $user ) )
        return false;
    return in_array( $role, (array) $user->roles );
}

// Disable WordPress SEO meta box for all roles other than administrator and seo
function wpse_init(){
    if( !(check_user_role('seo') || check_user_role('administrator')) ){
        // Remove page analysis columns from post lists, also SEO status on post editor
        add_filter('wpseo_use_page_analysis', '__return_false');
        // Remove Yoast meta boxes
        add_action('add_meta_boxes', 'disable_seo_metabox', 100000);
    }   
}
add_action('init', 'wpse_init');

function disable_seo_metabox(){
    remove_meta_box('wpseo_meta', 'post', 'normal');
    remove_meta_box('wpseo_meta', 'page', 'normal');
}

只需将其放在functions.php文件中即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25654837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档