我正在制作一个wordpress主题,我已经添加了一个自定义WP_query循环。循环本身工作正常,没有错误。我还使用了一些高级的自定义字段,但由于我无法理解的原因,当我尝试在自定义查询循环之前打印自定义字段时,没有返回到页面,但如果我在循环之后打印自定义字段,它看起来很好。
下面的工作(如果我在循环之后调用, 'test'将返回它的值到页面):
<div class="section blog-summaries">
<?php $the_blog_posts = new WP_Query( 'showposts=5' ); ?>
<?php while ($the_blog_posts -> have_posts()) : $the_blog_posts -> the_post(); ?>
<h5>» <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h5>
<p><span class="the_date"><?php the_time('F j, Y'); ?></span>
<?php echo substr(strip_tags($post->post_content), 0, 200);?>...</p>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<h3 class="title1"><?php the_field("test"); ?><span class="title-end"></span></h3>
</div>
…然而,如果我尝试在自定义循环之前打印自定义字段'test' 的值,则不会向页面返回任何值:
<div class="section blog-summaries">
<h3 class="title1"><?php the_field("test"); ?><span class="title-end"></span></h3>
<?php $the_blog_posts = new WP_Query( 'showposts=5' ); ?>
<?php while ($the_blog_posts -> have_posts()) : $the_blog_posts -> the_post(); ?>
<h5>» <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h5>
<p><span class="the_date"><?php the_time('F j, Y'); ?></span>
<?php echo substr(strip_tags($post->post_content), 0, 200);?>...</p>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</div>
我在循环之后有几个其他自定义字段,都正确地出现在页面上。奇怪的是,我发现如果我在文件中更早地调用acf自定义字段"test",它确实在页面上呈现…这听起来像PHP嵌套/语法错误吗?
如果有帮助的话,我可以把整个代码贴出来。
Thanks in advance
当您调用the_field()
时,如果没有提供post ID作为第二个参数,则使用global $post
。在你的例子中,你对WP_Query()
的调用设置了"循环",所以如果the_field()
在它之前被调用,ACF不知道什么post ID返回值,所以它(可能)使用你正在查看的页面的ID,这可能没有元值设置。您要么需要传入您想要显示其值的文章的ID,要么在循环中使用它。
the_field( 'field', $post_id );