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