显示高级自定义字段的内容

Displaying content of Advanced Custom Fields

当我尝试在同一页面上显示不同的自定义帖子和高级自定义字段时,我无法理解(我的)PHP 在做什么。

我已将不同的高级自定义字段添加到页面,并且我有自定义帖子,我正尝试使用模板显示。

我在整个模板中调用我的自定义字段使用:

<?php the_field(‘field-name’) ?>

我的自定义帖子是通过这样的循环调用的(模板中间某处):

<?php
  $args = array(
  'post_type' => ‘foo’
);

$foo = new WP_Query( $args );
if( $foo->have_posts() ) {

while( $foo->have_posts() ) {
  $foo->the_post();
?>
  <?php the_content() ?>                    
<?php
  }
}
else {
  // SOME MESSAGE
}
?>

高级自定义字段的内容在这些循环之上显示正常。在循环下面它只是不显示。

我不明白为什么内容没有显示出来。

我认为它与循环的 while 或 if 语句有关。如果我删除循环,下面任何高级自定义字段的内容都会显示。

当您使用 WP_Query() 时,每次循环 post 时都会更改页面上的默认 $post 变量。您需要在循环后调用 wp_reset_postdata() 来重置 $post 变量,使其再次对应于当前页面。您可以在 'while' 循环后调用该函数 -

<?php
$args = array(
    'post_type' => ‘foo’
);
$foo = new WP_Query( $args );

if( $foo->have_posts() ) {

    while( $foo->have_posts() ) { $foo->the_post();

        the_content();                    

    } wp_reset_postdata();
}
else {
  // SOME MESSAGE
}
?>