【问题标题】:WordPress - Advanced Custom Fields Clashing With Posts In Static PageWordPress - 高级自定义字段与静态页面中的帖子冲突
【发布时间】:2013-10-02 13:24:01
【问题描述】:

我有一个静态页面,其中有一个高级自定义字段 (ACF) 的“中继器”区域以及一些用于拉入一些自定义帖子的代码。

我在页面顶部有这段代码。

<?php get_header(); the_post(); query_posts('post_type=team_profiles') ?>

如果这样,我会看到我的帖子,但看不到来自 ACF 的数据。如果我取出以下部分:

query_posts('post_type=team_profiles')

我看到了 ACF 字段,但没有看到帖子数据。

我的问题首先是为什么会发生这种情况,其次是如何将它们放在同一页面上?

我的静态页面中 ACF 和 POSTS 的代码如下:

ACF 中继器字段

    <?php if( get_field('about_sections') ): ?>

    <?php while( has_sub_field('about_sections') ): ?>

    <div class="asset image">

    <?php the_sub_field('about_section'); ?>

    </div> <!-- asset image -->

    <?php endwhile; ?>

    <?php endif; ?>

帖子

    <?php if ( have_posts() ) : ?>

    <?php while ( have_posts() ) : the_post(); ?>

    <?php get_template_part( 'content-single-team-profile', get_post_format() ); ?>

    <?php endwhile; ?>

    <?php endif; ?>

【问题讨论】:

  • 如果您提供完整的源代码会很有帮助。

标签: wordpress


【解决方案1】:

发生这种情况是因为当您调用 get_posts() 时主查询被覆盖。您可以:

  • 调用 get_posts() 之后,您可以从静态页面(转发器字段值等)获得所需的一切。

  • 尝试从静态页面获取值之前调用 wp_reset_query()。这将为该页面的主查询设置原始参数。

看看这个:http://codex.wordpress.org/Function_Reference/wp_reset_postdata

这些都是简单的解决方案。更复杂和更好的将涉及创建一个 WP_Query 对象并迭代它的帖子,而不是依赖于全局变量。

【讨论】:

  • 感谢您的帮助,非常有意义。我实际上认为我可能发布了太多代码。我已经注意到这一点以备将来的问题。
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2016-06-25
  • 2011-03-25
  • 1970-01-01
  • 2013-10-10
  • 2013-10-16
  • 1970-01-01
相关资源
最近更新 更多