WooCommerce 产品上的 ACF 字段未显示

Posted

技术标签:

【中文标题】WooCommerce 产品上的 ACF 字段未显示【英文标题】:ACF fields on WooCommerce Product not displaying 【发布时间】:2021-11-26 01:30:48 【问题描述】:

我正在自定义一个名为 AmazeTheme 的旧主题,它不是专门使用 WooCommerce 支持制作的。 woocommerce.php 是主题的根源。然而,在 Simply Show HooksShow current template 等插件的帮助下,我可以看到在哪里放置哪些信息。

但我遇到了一个奇怪的问题。我添加的 ACF 字段根本不可见。我什至尝试在产品循环部分分配字段组。

我也试过下面的方法。

add_action( 'woocommerce_after_single_product_summary', 'view_acf_field_for_single_product', 10 );

function view_acf_field_for_single_product()  
  if (function_exists('the_field'))
    the_field('shop_support');
  


在 single-product.php 的循环中

        <?php while ( have_posts() ) : the_post(); ?>

            <?php wc_get_template_part( 'content', 'single-product' ); 
                   $dump = get_fields();
            ?>
        <?php endwhile; // end of the loop. ?>

然后在文件的所需位置执行var_dump($dump)

本站的php版本是5.6.40,WooCommerce版本是3.4.8 WP版本是4.9.18

我已经查找了许多解决方案。还尝试了 WooCommerce Hooks,但仍然不知道为什么 ACF 没有显示。

【问题讨论】:

【参考方案1】:

你能试试这个代码吗:

add_action( 'woocommerce_after_single_product_summary', 'view_acf_field_for_single_product', 10 );

function view_acf_field_for_single_product()  
  global $post;
  if (function_exists('the_field'))
    the_field('shop_support', $post->ID);
  


未测试。

【讨论】:

按照我尝试过的建议,将 get_the_id() 抓取到循环内的变量中,然后在循环外转储get_fields($ID_of_the_product)。还是没有运气。 并且还修改了该功能,如您所示。也没有运气。【参考方案2】:

由于一些奇怪的原因,这种方法对我有用 (path/to/theme/woocommerce/single-product.php):

<?php if (get_field_objects()): 
     foreach ( get_field_objects() as $field_id => $field ) : 
      $value = trim($field['value']); 
         if (!empty($value)) : 
?>
            <div class="product_field" id="field-<?php echo $field_id; ?>">
                <?php the_field($field_id); ?>
            </div>
        <?php endif; ?>
    <?php endforeach; // end of the loop. ?>
<?php endif; ?>

对于类别 (path/to/theme/woocommerce/archive-product.php) 页面还有以下内容:

<?php
$extra_info = get_field_object( 'category_details', get_queried_object() );
if ( !empty($extra_info) ) :
?>
    <div class="category_field" id="field-<?php echo $extra_info['key']; ?>">
        <?php echo $extra_info['value']; ?>
    </div>

<?php endif; ?>

即使在这些位置,get_fields() 也不起作用。

【讨论】:

以上是关于WooCommerce 产品上的 ACF 字段未显示的主要内容,如果未能解决你的问题,请参考以下文章

php 通过函数文件向woocommerce产品添加acf字段

php 通过函数文件向woocommerce产品添加acf字段

从 WooCommerce 购物车中的产品中获取 ACF 图像字段的数据

显示 WooCommerce 自定义分类法 ACF 字段

在商店页面上将 ACF 添加到 Woocommerce ul.products

将高级自定义字段添加到 WooCommerce 产品变体