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

Posted

技术标签:

【中文标题】在商店页面上将 ACF 添加到 Woocommerce ul.products【英文标题】:Adding ACF to Woocommerce ul.products on Shop Page 【发布时间】:2022-01-15 20:55:03 【问题描述】:

我正在使用 WooCommerce 和高级自定义字段,其中 ACF 组设置了产品的帖子类型。我想在产品标题下方的产品框中添加几个简单的文本字段,它将显示在所有产品上。

我已经查看并发现它的钩子是woocommerce_after_shop_loop_item_title

附上图片用于视觉描述。

像这样,我希望添加地址值 ($location)、卧室值 ($bed) 和浴室 ($bath)。

请理解我对 php 很陌生,还在学习。我已经尝试过,但是我不确定如何从产品的帖子中提取字段数据。

非常感谢任何正确学习方向的提示。

提前谢谢你。

add_action( 'woocommerce_after_shop_loop_item_title', 'woo_products_property', 1 );
function woo_products_property()  
    ?>          

<div class="property_loop_bottom_sec">
    <?php $location = get_field_object('address'); ?>
    <?php if( ! empty( $location ) )  ?>
    <div class="feature">
    <div class="value"><i class="et-pb-icon map-marker">&#xe081;</i><?php echo $location['value'];?></div>
    </div>
    <?php  ?>
    
    <?php $bed = get_field_object('bedroom'); ?>
    <?php if( ! empty( $bed ) )  ?>
    <div class="feature">
    <div class="value"><i class="fas fa-bed"></i><?php echo $bed['value'];?></div>
    <span>Bed</span>
    </div>
    <?php  ?>
    
    <?php $bath = get_field_object('bathroom'); ?>
    <?php if( ! empty( $bath ) )  ?>
    <div class="feature">
    <div class="value"><i class="fas fa-bath"></i><?php echo $bath['value'];?></div>
    <span>Bath</span>
    </div>
    <?php  ?>
</div>

    <?php 
 ?>

【问题讨论】:

【参考方案1】:

我修改了你的代码。试试下面的代码。

function woo_products_property()   
    global $post;
    ?>
    <div class="property_loop_bottom_sec">
        <?php 
        $location = get_field( 'address', $post->ID ); 
        if( ! empty( $location ) )  ?>
            <div class="feature">
                <div class="value"><i class="et-pb-icon map-marker">&#xe081;</i><?php echo $location['value'];?></div>
            </div>
        <?php  

        $bed = get_field( 'bedroom', $post->ID ); 
        if( ! empty( $bed ) )  ?>
            <div class="feature">
                <div class="value"><i class="fas fa-bed"></i><?php echo $bed['value'];?></div>
                <span>Bed</span>
            </div>
        <?php  

        $bath = get_field( 'bathroom', $post->ID); 
        if( ! empty( $bath ) )  ?>
            <div class="feature">
                <div class="value"><i class="fas fa-bath"></i><?php echo $bath['value'];?></div>
                <span>Bath</span>
            </div>
        <?php  ?>
    </div>

<?php  
add_action( 'woocommerce_after_shop_loop_item_title', 'woo_products_property', 1 );

经过测试且有效

【讨论】:

谢谢Bhautik。位置字段对我来说效果不佳。它以某种方式工作,但只显示 1 个字符。图标和值是字母 B。而实际值是 'Belmont Gardens, Town, Post Code' -> B 尝试打印$location 嘿Bhautik。将其更改为打印 $location 但不幸的是似乎看起来相同。 ACF $location 的值仅显示第一个字符。 当我说 print $location 变量来看看你得到了什么时,我想你错过了理解。像这样echo "&lt;pre&gt;"; print_r($location); echo "&lt;/pre&gt;";var_dump($location)

以上是关于在商店页面上将 ACF 添加到 Woocommerce ul.products的主要内容,如果未能解决你的问题,请参考以下文章

仅在 WooCommerce 单一产品页面上将添加到购物车文本更改为“应用”

将 ACF 字段添加到搜索结果页面 WordPress

在每个页面上将状态重置为初始状态

将基于 ACF 字段的自定义“添加到购物车”按钮添加到 WooCommerce 单品页面

php 添加此代码以将ACF字段添加到页面/帖子。务必检查wordpress仪表板顶部菜单中的屏幕选项

在 WooCommerce 特定 ID 产品页面上将自定义内容添加到多个产品中