如何在没有插件的情况下只按用户角色显示特定类别的帖子,并限制所有其他猫

时间:2019-08-17 作者:sasa

我使用基本帖子来添加帖子。存在5类(cat\\U A、cat\\U B、cat\\U C、cat\\U D、cat\\U E)。我有两个用于注册访问者的自定义user\\u角色,即“viewer\\u a”和“viewer\\u b”。我需要只显示特定用户角色的选定类别帖子。

因此,“viewer\\u a”下的用户只能查看cat\\u a帖子,而“viewer\\u B”下的用户只能查看cat\\u B帖子。严格限制其他岗位。

没有插件我怎么做?

1 个回复
SO网友:Krzysiek Dróżdż

如果使用全局循环来显示帖子,那么可以使用pre_get_posts 行动

function restrict_categories_for_user( $query ) {
    if ( ! is_admin() && $query->is_main_query() && get_current_user_id() ) {
        $user = wp_get_current_user();
        if ( in_array( \'viewer_a\', (array) $user->roles ) ) {
            // The user has the "viewer_a" role
            $query->set( \'category_name\', \'cat_A\' );  // <- use category slug here
        }
        if ( in_array( \'viewer_b\', (array) $user->roles ) ) {
            // The user has the "viewer_b" role
            $query->set( \'category_name\', \'cat_B\' );  // <- use category slug here
        }
    }
} 
add_action( \'pre_get_posts\', \'restrict_categories_for_user\' );
我假设您想限制这些用户可以在前端查看哪些帖子。如果要限制在后端可见的帖子,则必须更改此条件if ( ! is_admin() && $query->is_main_query() && get_current_user_id() ) { 照着

相关推荐

Functions.php上未定义$_GET和&_REQUEST索引

我最近尝试学习为我的自定义主题创建一个主题选项页面,这是按照stackoverflow和其他资源的教程进行的。但脚本显示错误if ($_GET[\'page\'] == basename(__FILE__)) { if (\'save\' == $_REQUEST[\'formaction\']) { foreach ($options as $value) { if( isset( $_REQUEST[ $value[\'id\']