WordPress-根据条件隐藏表行

WordPress-根据条件隐藏表行,wordpress,custom-post-type,Wordpress,Custom Post Type,我有一个名为Topics的定制CPT,只有编辑器或管理员才能创建一个。有自定义列和自定义元框。它仅用于后端目的,不用于发布。因此,它有一个元框,它将有一个作者列表,选择一个将把它分配给作者,并显示在具有自定义列名author的表中。所以,我希望作者只看到那些通过MetaBox分配给他们的主题。应该隐藏其他主题。是否有方法隐藏具有条件的特定行。”cruiser_writer_value_key'将保存作者的姓名。所以我的情况是 $writer_list_value = get_post_meta(

我有一个名为Topics的定制CPT,只有编辑器或管理员才能创建一个。有自定义列和自定义元框。它仅用于后端目的,不用于发布。因此,它有一个元框,它将有一个作者列表,选择一个将把它分配给作者,并显示在具有自定义列名author的表中。所以,我希望作者只看到那些通过MetaBox分配给他们的主题。应该隐藏其他主题。是否有方法隐藏具有条件的特定行。”cruiser_writer_value_key'将保存作者的姓名。所以我的情况是

$writer_list_value = get_post_meta( $post_id, 'cruiser_writer_value_key', true );
$current_user = wp_get_current_user();

if($current_user->display_name == $writer_list_value){
    //display post row
}

else{
    //hide post row of the column
    }
我真的被困在这里面了。是的,我也有自己的专栏。只是我不想让作者编辑或阅读未分配给他们的主题。 所以,我的自定义CPT是这样的,自定义列就在那里。有关更多详细信息,请参见图片。

使用筛选帖子列表筛选帖子 添加操作('pre_get_posts','filter_posts_list')


嘿,真的很感谢你的回复,但还是有一些问题。首先,我想检查用户是作者、编辑还是管理员。如果它是admin或editor,则显示所有文章,如果它是author,则检查当前作者的显示名称,如果它等于在文章的writer列中传递的meta_值,则显示文章,但如果该值不同于隐藏该行。我知道你的答案可能是正确的,但如果你能解释得更多,那就容易多了。嘿,这很有效。但我有个小问题。作者无法编辑已分配给他们的帖子。他们能看见,但不能做更多的事。如果这样行的话,我就准备好了。我真的很感激你。无论如何,谢谢。我认为你必须更改用户权限,如果你使用任何插件,必须有选项将不同的权限授权给不同的角色。如果它们对你有帮助,请检查以下链接,这非常感谢。
function filter_posts_list($query)
{
    //$pagenow holds the name of the current page being viewed
     global $pagenow, $typenow;  

     $user = wp_get_current_user();
        $allowed_roles = array('author');
        //Shouldn't happen for the admin, but for any role with the edit_posts capability and only on the posts list page, that is edit.php
        if(array_intersect($allowed_roles, $user->roles ) && ('edit.php' == $pagenow) &&  $typenow == 'your_custom_post_type')
        { 
        //global $query's set() method for setting the author as the current user's id
        $query->set(
        'meta_query', array(
        array(
            'key'     => 'yout_meta_key',
            'value'   => $user->display_name,
            'compare' => '==',
        ),
        )
        ); // here you can set your custom meta field using meta_query.
        }
}