所以,我要做的是按 ID 过滤 WordPress 仪表板中的帖子列表(我的实际上是自定义帖子类型)。
我正在检查另一个区域(自定义小部件)以查看用户是否可以编辑给定的帖子(不是,我故意避开 WordPress 角色等),如果他们不能,我想从列表中过滤/排除该帖子。
我想拿这个清单:
...并过滤掉另一个函数返回的帖子 ID
所以,我要做的是按 ID 过滤 WordPress 仪表板中的帖子列表(我的实际上是自定义帖子类型)。
我正在检查另一个区域(自定义小部件)以查看用户是否可以编辑给定的帖子(不是,我故意避开 WordPress 角色等),如果他们不能,我想从列表中过滤/排除该帖子。
我想拿这个清单:
...并过滤掉另一个函数返回的帖子 ID
好的,所以我已经回答了我自己的问题。这是一些关于我是如何做到的代码。
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');