如何在WordPress仪表板/管理员的帖子列表中按ID过滤/排除帖子

时间:2012-06-04 22:08:10

标签: wordpress list dashboard posts

所以,我想要做的是按ID过滤WordPress仪表板中的帖子列表(我的实际上是一个自定义帖子类型)。

我正在检查另一个区域(自定义小部件)以查看用户是否可以编辑给定的帖子(不是,我故意躲避WordPress角色等),如果他们不能我想从列表中过滤/排除该帖子

我想拿这份清单:

参见图片:https://lh6.googleusercontent.com/-nQLDUpoHUig/T84sUXwqNDI/AAAAAAAAB1o/fzZvCkSjawI/w678-h533-k/list_of_posts.PNG

...并过滤掉另一个函数返回的帖子ID

1 个答案:

答案 0 :(得分:2)

好的,所以我回答了我自己的问题。以下是我如何做到的一些代码。

function exclude_list_per_function( $query ) {

    global $wpdb;

    //gets all the post ID's, I know this is a bit of a hack
    $querystr = "
        SELECT $wpdb->posts.ID
        FROM $wpdb->posts
    "; $post_ids = $wpdb->get_results($querystr, OBJECT);

        //Go through each post and pass it to a function that returns true if the user_can, and false if the user_can't
        foreach($post_ids as $post_obj){
            if(!can_user_other_function_view_this_post(get_post($post_obj->ID))){
                //if they_can't, add them to the array to be excluded
                $posts_not_in[]=$post_obj->ID;
            }
        }

        //Set those posts to be excluded from the list.
        $query->set( 'post__not_in', $posts_not_in );
}

add_action( 'pre_get_posts', 'exclude_list_per_function');