在下面的代码中,我从高级自定义字段插件中调用字段,只有前两个显示'home_title'和'home_content'。在这两个之后,我运行两个不同的循环来显示给定类别中的最新帖子。在这些循环运行之后,还有来自ACF的另外4个字段被调用。 'donate_title','donate_content','mission_title','mission_content'。哪些没有出现(根本没有提取任何内容)。
如果我在运行循环之前移动这些ACF,它们都会正确显示。所以我想这些循环之后有问题,但找不到原因。
<div class="main-site">
<div class="home-title-1">
<?php the_field('home_title'); ?>
</div>
<div class="home-content-1">
<?php the_field('home_content'); ?>
</div>
<div class="home-boxes-cont">
<div class="box-left">
<?php
query_posts('cat=4&posts_per_page=1');
while (have_posts()) : the_post(); ?>
<div class="bl-img">
</div>
<div class="bl-title">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</div>
<div class="bl-content">
<?php the_excerpt(); ?>
</div>
<?php endwhile; ?>
</div>
<div class="box-middle">
<?php
query_posts('cat=5&posts_per_page=1');
while (have_posts()) : the_post(); ?>
<div class="bm-img">
</div>
<div class="bm-title">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</div>
<div class="bm-content">
<?php the_excerpt(); ?>
</div>
<?php endwhile; ?>
</div>
<div class="box-right">
<div class="br-img">
</div>
<div class="br-title">
<?php the_field('donate_title'); ?>
</div>
<div class="br-content">
<?php the_field('donate_content'); ?>
</div>
</div>
</div>
<div class="mission-title">
<?php the_field('mission_title'); ?>
</div>
<div class="mission-content">
<?php the_field("mission_content"); ?>
</div>
答案 0 :(得分:0)
您正在更改全局 wp_query 变量。当你这样做而且结果不是is_single()
时,你就不能再拉出任何ACF设置了。
将 wp_query 重置为其原始页面设置,或者在进行任何 wp_query 更改之前将变量存储在数组中,并在以后需要时将其检索到代码。
答案 1 :(得分:0)
虽然我同意Scriptonomy,但你应该只使用get_posts()。这正是此函数的设计目的...主循环外的自定义循环。您应该很少需要修改全局wp_query变量。
如果您仍希望在不传递帖子ID的情况下使用the_permalink()
和the_title()
,请向下滚动页面标记为“访问所有帖子数据”的部分,您将看到如何使用{ {1}}让它更容易。
答案 2 :(得分:0)
为了在使用query_posts()调用更改全局发布数据后从原始帖子获取自定义字段数据,您需要使用wp_reset_query()函数重置发布数据。在每次循环后放置此函数 -
<?php while (have_posts()) : the_post(); ?>
...
<?php endwhile; wp_reset_query(); ?>