WordPress-根据条件隐藏表格行

时间:2019-02-08 08:16:36

标签: wordpress custom-post-type

我有一个名为“主题”的自定义CPT,只有编辑者或管理员可以创建一个。有自定义列和自定义元框。它仅用于后端目的,不能用于发布。因此,它具有一个meta框,并且将具有一个作者列表,选择一个将其分配给作者并在名称中显示,该名称将显示在具有自定义列名称Author的表中。因此,我希望作者仅查看通过meta框分配给他们的那些主题。其他主题应被隐藏。有没有一种方法可以隐藏带有条件的特定行。 '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就是这样,并且自定义列也在那里。有关更多详细信息,请参见图片。 Picture of the Topic CPT with custom Columns.

1 个答案:

答案 0 :(得分:1)

使用filter_posts_list过滤帖子 add_action('pre_get_posts','filter_posts_list');

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.
        }
}