无法访问PHP代码中的ACF字段

时间:2018-07-16 19:51:49

标签: php wordpress advanced-custom-fields

我正在尝试使用ACF设置自定义字段featured_image,并且无法在我的PHP代码中访问它。首先是确认将字段添加到最新帖子的屏幕截图,然后是php代码。

我是WordPress的新手,所以我希望这是一个琐碎的误会。

我运行了var_dump( get_post_meta(get_the_ID()) );,它没有显示'featured_image'字段的存在。我还创建了一个text自定义字段,该字段也没有显示。

ACF field setup

Setting field value on post

<?php $my_query = new WP_Query( 'cat=2&posts_per_page=3' );
  while ( $my_query->have_posts() ) : $my_query->the_post();
      // some variable code
?>

    <div class="section-info background3">
      <div class="section-details">
        // some irrelevant html

        <?php

          $image = get_field('featured_image');
          var_dump( $image );
          echo $image;

          $featured_image = the_field('featured_image');
          var_dump( $featured_image );

          $size = 'full'; // (thumbnail, medium, large, full or custom size)

          if( $image ) {
            echo wp_get_attachment_image( $image, $size );
          }
        ?>
      </div>
    </div>

<?php endwhile; ?>

哪个输出

bool(false)代表var_dump( $image );

NULL for var_dump( $featured_image );

任何帮助将不胜感激。预先感谢。

1 个答案:

答案 0 :(得分:1)

在这种情况下,我要采用的第一个策略是确认数据是否存在于数据库级别。

针对您的数据库运行查询:

SELECT * FROM `wp_postmeta` WHERE `post_id` = YOUR_POST_ID AND `meta_key` LIKE '%featured_image%'

如果您可以确认数据在那里,那么接下来要做的就是确保将正确的post_id传递给get_field。

由于您要创建自定义WP_Query,并且get_field通常从全局$post变量中推断出ID,因此总会有混淆的可能。 get_field可以选择使用第二个$post_id参数。

如果您可以在自定义循环中转储get_the_ID()的内容,并确认其与featured_image字段中包含数据的帖子相匹配,则以

的形式发送
<?php 

$my_query = new WP_Query('cat=2&posts_per_page=3');

while ($my_query->have_posts() ) :
    $my_query->the_post();
    var_dump(get_the_ID()); // <-- this should match the ID of the post w/ the featured_image
    $image = get_field('featured_image', get_the_ID());
    var_dump($image);
endwhile;

wp_reset_postdata(); // always good practice to reset the globals after a custom q!