【问题标题】:get_post_meta() not display field value for first item in wordpress loopget_post_meta()不显示wordpress循环中第一项的字段值
【发布时间】:2019-11-18 18:14:36
【问题描述】:

我有一个 WordPress 自定义字段,用于将自定义类分配给某些可滚动元素以获得landor 样式效果。我的get_post_meta() 函数有问题,它只会显示循环第二个帖子的字段值,而不是第一个。我正在使用自定义帖子类型,但我认为这不是问题所在。有什么解决办法吗? 代码如下:

<?php $item = new WP_Query( ['post_type' => 'home-slider', 'posts_per_page' => 3] ); ?>
<?php if( $item->have_posts() ): while( $item->have_posts() ): $item->the_post(); ?>
<?php $class = get_post_meta($post->ID,'class',true); ?>
      <div class="col-sm-12 col-md-12 col-lg-12 img-<?php echo $class; ?>"> <!-- custom class -->
        <div class="row">
          <div class="col-sm-12 col-md-12 col-lg-12 img-text">
            <h1 class="">Hello</h1>
            <p class="lead">Nice to meet you.</p>
          </div>
        </div>
        <img class="img-fluid bg-img" src="<?php the_post_thumbnail_url(); ?>">
      </div>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>

【问题讨论】:

  • 你检查过两个帖子都有元吗?
  • 是的,键和值都保存在数据库中,但只有第一个不显示!可能是top 字有问题吗?我已将类字段值命名为顶部。
  • get_post_meta 将第三个参数设为 true,只会得到数组中的第一项。这就是你所希望的吗?
  • 如果我 var_dump() 将第三个参数设置为 false 的类值将返回一个空数组,但如果设置为 true,它只会加载第二个帖子的类。

标签: php wordpress


【解决方案1】:

您需要将 $post->ID 更改为 get_the_ID()。 希望有所帮助。

【讨论】:

  • 已经尝试过了,我得到了相同的结果!函数在循环内,所以$post 变量可用。
  • 你在检查count items吗?
  • count item 是什么意思?
  • 例如count(item->get_posts())。
  • 可能在项目中 只是第二个帖子。
【解决方案2】:

我无法找到问题的解决方案。为了测试这是否是与帖子类型相关的问题,我注册了一个新的,并添加了相同的字段来管理所需的自定义类。结果是一切正常,我认为我试图添加自定义字段的帖子类型存在问题,因为我添加自定义字段支持晚于创建帖子类型并将其插入到 wordpress 中数据库。 谢谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-25
    • 2016-03-16
    • 1970-01-01
    • 2015-04-21
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多