我正在使用Genesis子主题,并使用此功能在主页上显示功能帖子。
function modern_motoroids_extra_feature_posts(){ ?>
<?php $do_not_duplicate = array(); ?>
<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; ?>
<?php query_posts( array(\'meta_key\' => \'feature-story\', \'orderby\'=> \'date\', \'paged\' => get_query_var( \'paged\' ), \'posts_per_page\' => 4, \'post__not_in\' => $do_not_duplicate)); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $do_not_duplicate[] = get_the_id(); ?>
<?php echo get_the_titke(); ?>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
<?php }
add_action(\'genesis_before_content_sidebar_wrap\',\'modern_motoroids_extra_feature_posts\');
然后我用这个函数在同一页上显示最新的帖子。
function latest_feature_posts(){ ?>
<?php $do_not_duplicate = array(); ?>
<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; ?>
<?php query_posts( array(\'orderby\'=> \'date\', \'paged\' => get_query_var( \'paged\' ), \'posts_per_page\' => 10, \'post__not_in\' => $do_not_duplicate)); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $do_not_duplicate[] = get_the_id(); ?>
<?php echo get_the_titke(); ?>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
<?php }
add_action(\'genesis_before_content_sidebar_wrap\',\'latest_feature_posts\');
问题是它仍然显示重复的帖子,即使在使用
$do_not_duplicat
. 我试图在google和stackoverflow上搜索,但什么都没有得到。请帮帮我。这些函数显示重复的帖子是什么?以及如何排除它们。
最合适的回答,由SO网友:Samyer 整理而成
编辑:您可以使用meta\\u查询和“NOT IN”从第二个查询中排除专题报道,而不是所有这些。这是最简单的答案。
退房this meta query documentation 寻求帮助。
您需要将do\\u not\\u duplicate设置为全局数组,以便跨函数访问它(非常确定)。
2,在每个函数的开头用<?php $do_not_duplicate = array(); ?>
试着去掉在第二个函数中声明为数组的部分。而是使用以下命令将其回显到控制台://Debug in console
echo \'<script> console.dir(\' . json_encode($do_not_duplicate) . \'); </script>\';
坚持那一小段代码,它让我的生活变得更容易调试变量等等。
如果这不起作用,请将$do\\u not\\u duplicate声明为全局变量,这样应该可以完成工作。