在主页、单曲和分类上显示帖子时,从小部件中排除帖子

时间:2015-05-02 作者:wp-rs1

我在用这个widget.

但是我想知道如何让它不显示当前正在发布的任何帖子

显示在主页上,单个帖子和类别。

另一位用户提出了相同的问题here

提供了以下解决方案:

add_filter( \'rpwe_default_query_arguments\', \'rpwe_exclude_current_post\' );
function rpwe_exclude_current_post( $args ) {
if( is_singular() && !isset( $args[\'post__in\'] ) )
$args[\'post__not_in\'] = array( get_the_ID() );
return $args;
}
它对单个帖子有效,但对主页或类别中的帖子无效。

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

对第三方插件的具体支持是无关紧要的,但您的问题可以在一般范围内得到回答。get_the_ID() 不适用于此特定问题,您需要的是当前显示在您查看的页面上的帖子ID数组。

任何给定页面上显示的当前帖子数组存储在$posts 的主查询或任何自定义实例的属性WP_Query. 您希望从这里提取所有要传递到的帖子ID$args[\'post__not_in\'] 在您的问题代码中。

您可以在上面的代码中尝试以下操作

global $wp_query;
$post_ids = wp_list_pluck( $wp_query->posts, \'ID\' );
然后你可以喂食$post_ids$args[\'post__not_in\']

$args[\'post__not_in\'] = $post_ids;
您只需要传递正确的条件来针对特定的页面

结束