从用户的WPAdmin列表中删除一些项目

时间:2017-12-07 作者:Fredy31

enter image description here

我想删除一些为某些用户显示的帖子。

下面是一个很长的问题解释:

在我的网站中,有组。这些小组可以发布博客文章,但只能访问他们自己的章节制作的博客文章。

因此,我为用户放置了一个元,并在帖子中放置了另一个元,但现在,在帖子列表中,我只想显示两个元匹配的那些元。

那么,我如何从管理中的博客列表页面中删除一些博客帖子呢?

1 个回复
最合适的回答,由SO网友:Drupalizeme 整理而成

这可以通过以下两种方式实现:

具有pre_get_posts小的修改将需要它,就像实际的元值名称一样

function alter_edit_php_query_remove_posts($query) {
    $screen = get_current_screen();
    if(is_admin() && $screen->post_type == \'post\') {

        $current_user = wp_get_current_user();
        $key = \'nickname\';
        $single = true;
        $user_meta_value = get_user_meta( $current_user->ID, $key, $single); 

        $meta_query = array(
                        array(
                            \'key\'=>\'_edit_last\',
                            \'value\'=>$user_meta_value,
                            \'compare\'=>\'=\',
                        ),
        );
        $query->set(\'meta_query\',$meta_query);
  }
}
add_action(\'pre_get_posts\',\'alter_edit_php_query_remove_posts\');
使用map_meta_cap:

    add_filter(\'map_meta_cap\', \'prevent_user_view_post\', 3, 4 );
    function prevent_user_view_post( $required_caps, $cap, $user_id, $args ){   

        if( ( $cap==\'read_post\'|| $cap=\'edit_post\') ){
            $post_id  = $args[0]??0;

            $post_meta_value=get_post_meta($post_id,\'meta_key\',true);
            $key = \'nickname\';
            $single = true;
            $user_meta_value = get_user_meta( $user_id, $key, $single );
            $user_meta_value = 2;
            if ( $post_meta_value != $user_meta_value && $post_id ==1 ){
                $required_caps[] = \'do_not_allow\';
            }

        }

        return $required_caps;

    }

结束