我有一个名为“主题”的自定义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就是这样,并且自定义列也在那里。有关更多详细信息,请参见图片。
答案 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.
}
}