【问题标题】:Displaying content of Advanced Custom Fields显示高级自定义字段的内容
【发布时间】:2016-03-15 17:44:08
【问题描述】:

当我尝试在同一页面上显示不同的自定义帖子和高级自定义字段时,我无法理解(我的)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 语句有关。如果我删除循环,下面的任何高级自定义字段的内容都会显示。

【问题讨论】:

    标签: php wordpress custom-post-type advanced-custom-fields


    【解决方案1】:

    当您使用WP_Query() 时,您每次循环浏览帖子时都会更改页面上的默认$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
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 2018-08-26
      • 1970-01-01
      • 2018-04-15
      • 2015-12-24
      • 2018-06-15
      • 2019-01-18
      • 2019-08-20
      • 2014-05-09
      相关资源
      最近更新 更多