从通过get\\u template\\u part()调用的部分中的辅助循环上下文中引用主循环的最佳实践方法是什么?
例如,假设我的主页包含一个二级循环,以列出两篇文章类型的帖子:
<?php
$articles = new WP_Query( array(
\'post_type\' => \'article\',
\'posts_per_page\' => 2
) );
if ( $posts->have_posts() ) : ?>
<ul>
<?php
while ( $articles->have_posts() ) : $articles->the_post();
get_template_part( \'templates/listing\', \'article\');
endwhile;
?>
</ul>
<?php
endif;
?>
和/模板/列表文章。php,我有:
<?php if (!is_front_page()) : ?>
<div><?php the_content(); ?></div>
<?php endif; ?>
这里,\\u content()按预期/预期列出了文章的内容。is\\u front\\u page()按预期返回false,但不是按预期返回-我的目的是显示除主页以外的任何页面上的内容。
因此,我的问题是:如何使像is\\u front\\u page()这样的条件模板标记根据主循环中的帖子返回true/false,而不是我的第二个循环。
你可以在你的主页模板中设置一个全局变量,然后在你的部分中引用,但我想问的是,是否有一个标准的、更好的解决方案。
最合适的回答,由SO网友:tfrommen 整理而成
您可以直接询问主查询(实际上is_front_page
函数正在执行)。
<?php global $wp_query; ?>
<?php if ( $wp_query->is_front_page() ) : ?>
<div><?php the_content(); ?></div>
<?php endif; ?>
但是,如果更改了主查询,请参阅备份。
<?php global $wp_the_query; ?>
<?php if ( $wp_the_query->is_front_page() ) : ?>
<div><?php the_content(); ?></div>
<?php endif; ?>