如何从管理编辑屏幕中排除一些帖子

时间:2020-11-25 作者:Maanas Royy

我想根据角色限制哪个帖子出现在用户编辑屏幕中。角色映射到类别。

我试图在检索帖子时添加一些条件,以便编辑屏幕中只显示属于特定类别的帖子。

我找不到合适的射击钩。我尝试了“pre\\u get\\u posts”,然后尝试修改满足条件的查询 if (is_admin() && $query->is_main_query()) {但是没有用。

1 个回复
SO网友:Howdy_McGee

我不知道你为什么pre_get_posts 因为这是正确使用的挂钩。例如,如果我们想限制edit.php 当当前用户是作者时,屏幕仅显示作者的帖子,我们可以说:

/**
 * Pre Get Posts
 * Restrictions by Role
 * 
 * @return void
 */
function wpse378774_pgp( $query ) {
    
    // Return Early - Not Admin Panel
    if( ! is_admin() ) {
        return;
        
    // Return Early - Not Main Query
    } else if( ! $query->is_main_query() ) {
        return;
    }
    
    $user = wp_get_current_user();
    
    // Return Early - User not an author
    if( ! in_array( \'author\', (array)$user->roles ) ) {
        return;
    }
    
    // Limit all queries to only show posts by author
    if( $query->is_main_query() ) {
        
        // Get all user IDs who are authors
        $user_query = new WP_User_Query( array(
            \'role\'      => \'author\',
            \'fields\'    => \'ID\',
        ) );
        $user_ids = $user_query->get_results();
        
        // Set our query modifier
        $query->set( \'author__in\', $user_ids );
        
    }
    
}
add_action( \'pre_get_posts\', \'wpse378774_pgp\' );
有关更多信息,请查看WP_QueryWP_User_Query.

相关推荐

如何根据从admin/dashboard设置的CSS值设计表格

我已在创建了一个表Single Product Page 通过plugin.我想换衣服color, border, bg-color 等根据管理员将从中设置/输入的值dashboard.到目前为止,我已经完成了以下工作。从以下内容form (attached image), 管理员将选择css 价值观table body, header 等等,然后save 巴顿,所有这些css 值将保存在中wp_options 像key value 一对For Example\'table_background_colo