如何使用GET_TEMPLATE_PART()使用新的WP_QUERY()使条件模板标记基于辅助循环中的主循环

时间:2014-08-03 作者:iain

从通过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,而不是我的第二个循环。

你可以在你的主页模板中设置一个全局变量,然后在你的部分中引用,但我想问的是,是否有一个标准的、更好的解决方案。

1 个回复
最合适的回答,由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; ?>

结束

相关推荐

Nested WP_Query breaking loop

我正在使用WP_Query 获取没有子页面的所有页面。对于我再次使用的每个页面WP_Query 获取第一个循环中当前页的所有子页。这一切都很好,我得到了预期的结果。但是现在使用第三个WP_Query 在其中一个子页面上,第二级循环中断。我已经试过了wp_reset_query() 和wp_reset_postdata() 但他们没有做到这一点。我还试图挽救global $wp_query 和global $post 并在循环后重置它们,但这也没有帮助。如何在WP中实现嵌套查询?Edit 根据要求(以及它的