WordPress 目前不支持一次从查询中删除多个作者帖子。
但是我们可以使用另一个钩子posts_where
来删除我们不需要的作者。但是如果我们使用这个钩子,它将影响 WordPress 中的所有地方。所以我们在hook这个过滤器的时候要小心。
如果将它添加到functions.php
文件中,它将在所有具有post_where
钩子的查询中运行。
functions.php
在您的主题中添加此功能。
function remove_author_posts ($where) {
global $wpdb;
//add the author id's you need to remove
$removed_authors = array ('4', '5', '6');
$where .= ' AND ' . $wpdb->posts . '.post_author !=' . implode(' AND ' . $wpdb->posts . '.post_author !=', $removed_authors);
return $where;
}
现在将此过滤器添加到您调用 query_posts 的位置
add_filter ('posts_where', 'remove_author_posts');
不要在您的主题functions.php
文件中添加此过滤器挂钩。只在需要的地方添加。
现在更改您的查询帖子并在您需要的页面中添加过滤器,如下所示:
query_posts( 's=' . $user_login . '&posts_per_page=25&paged='. $paged );
所以完整的东西看起来像
add_filter ('posts_where', 'remove_author_posts');
query_posts( 's=' . $user_login . '&posts_per_page=25&paged='. $paged );
更新 :
global
如果您需要动态更改作者 ID,则可以使用变量。在添加过滤器之前添加一个新global
变量。$remove_authors
global $removed_authors ;
//add the author id's you need to remove
$removed_authors = array ('4', '5', '6');
add_filter ('posts_where', 'remove_author_posts');
query_posts( 's=' . $user_login . '&posts_per_page=25&paged='. $paged );
现在更改 functions.php 文件中的 remove_author_posts
function remove_author_posts ($where) {
global $wpdb, $removed_authors;
if (empty ($removed_authors) || !is_array($removed_authors))
return $where;
$where .= ' AND ' . $wpdb->posts . '.post_author !=' . implode(' AND ' . $wpdb->posts . '.post_author !=', $removed_authors);
return $where;
}
希望这可以帮助你:)