在一个帖子页面上,我有一个侧栏,显示多达三篇其他相关帖子。如何排除粘性帖子和当前帖子?
我知道如何在WP\\u查询中使用post\\u not\\u in来排除当前帖子和粘性帖子,请参见下面的代码示例。但是我想你不能在同一个查询中两次使用post\\u not\\u in。有什么建议吗?
$current_post_ID = get_the_ID();
$args = array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'order\' => \'DESC\',
\'orderby\' => \'date\',
\'posts_per_page\' => 3,
\'post__not_in\' => get_option( \'sticky_posts\' )
\'post__not_in\' => array($current_post_ID)
);
最合适的回答,由SO网友:Johannes Pille 整理而成
只要参数数组是WP核心函数中的函数参数,就会通过wp_parse_args
而且几乎总是这样extracted 转换为单个变量
也就是说,不可以使用同一个参数两次。
您要做的是这样的:
$exclude = get_option( \'sticky_posts\' );
$exclude[] = get_the_ID();
$args = array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'order\' => \'DESC\',
\'orderby\' => \'date\',
\'posts_per_page\' => 3,
\'post__not_in\' => $exclude
);
顺便说一句,你还漏掉了一个逗号。
SO网友:Marc Dingena
您应该将当前帖子的ID添加到粘性帖子的ID数组中,并将此单个数组传递给post__not_in
:
$current_post_ID = get_the_ID();
$excluded_ids = get_option( \'sticky_posts\' );
$excluded_ids[] = $current_post_ID;
$args = array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'order\' => \'DESC\',
\'orderby\' => \'date\',
\'posts_per_page\' => 3,
\'post__not_in\' => $excluded_ids
);
还请注意,您没有在第一个
post__not_in
. 这可能会导致问题,因为
post__not_in
未被识别为数组的另一个元素。