如何使用 'post_type' => 'product' 在 WP_Query 循环中显示 ACF

Posted

技术标签:

【中文标题】如何使用 \'post_type\' => \'product\' 在 WP_Query 循环中显示 ACF【英文标题】:How to show ACF in a WP_Query loop with 'post_type' => 'product'如何使用 'post_type' => 'product' 在 WP_Query 循环中显示 ACF 【发布时间】:2021-03-09 12:52:05 【问题描述】:

尝试实现这一点: 我在我的 WooCommerce 产品中创建了一个 ACF(自定义字段),现在我尝试使用以下代码在我的模板中显示该字段:

 <ul class="products">
    <?php

    $args = array(
        'posts_per_page' => 20,
        'post_type' => 'product',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_type',
                'field'    => 'name',
                'terms'    => 'grouped',
            ),
        ),
    );
    $loop = new WP_Query( $args );
    if ( $loop->have_posts() ) 
        while ( $loop->have_posts() ) : $loop->the_post();
            $linked_with_items = the_field('linked_with_items');
            the_title('<strong>', '</strong>'); echo '<br />';
            echo $linked_with_items;
        endwhile;
     else 
        echo __( 'No products found' );
    
    wp_reset_postdata();
    ?>
</ul><!--/.products-->

但是无论我用 get_field() 尝试什么,该字段都不会显示在我的模板中。 有人可以帮忙吗? https://www.advancedcustomfields.com/

这是最终代码仅供参考

 <?php if( have_rows('catalogue') ): ?>
   <?php
       while( have_rows('catalogue') ): the_row(); // catalogue is the field
       the_sub_field('linked_with_items'); ?>
 <?php endwhile; ?>
<?php endif; ?>

【问题讨论】:

只是为了确认您已在您的产品帖子中为这个新字段设置了一个值,对吗? var_dump(get_field('linked_with_items')); 有什么用? NULL 是我得到的响应 【参考方案1】:

你可以试试这个:

$linked_with_items  = get_field('linked_with_items', get_the_ID());

如果这不起作用,只是作为测试,您可以尝试使用 foreach 简单地循环帖子

foreach ( $loop->posts as $post ) 
    $linked_with_items  = get_field('linked_with_items', $post->ID);

如果这些都不起作用,请确保您的产品确实具有该自定义字段,仔细检查 ACF 字段设置(规则部分),字段 slug,并仔细检查您的产品编辑页面以查看字段是否显示在那里.

【讨论】:

这两种方法都不起作用。我想我的循环做错了......因为这个循环在另一个循环内。我继续看 请尝试 var_dump($post->ID);在第二个解决方案中,如果 acf_field 实际存在并保存,则在数据库中查找。或者反过来,找到一个确实保存了 acf_field 的帖子,然后使用硬编码(仅作为测试)来查看 get_field 是否适合您 确实你会看到 int(304) int(270) int(193) int(19) int(13) int(6) 好的,现在使用这些 id,搜索 wp_postmeta 表并查看其中是否有任何将“linked_with_items”作为具有实际值的 postmeta 行之一 感谢我的想法朝着正确的方向发展! linked_with_items 不是字段,而是字段中的子字段,我很愚蠢

以上是关于如何使用 'post_type' => 'product' 在 WP_Query 循环中显示 ACF的主要内容,如果未能解决你的问题,请参考以下文章

从特定post_type中排除帖子

wordpress调用自定义post_type文章

Wordpress - 按“post_type”检索所有帖子,然后按分类过滤

使用 WooCommerce 产品搜索搜索特定 post_type 表单 post_type 列时出错

为 post_type = ?? 的每个 id 添加元值WordPress

php 模板自定义post_types