【问题标题】:Adding ACF to Woocommerce ul.products on Shop Page在商店页面上将 ACF 添加到 Woocommerce ul.products
【发布时间】: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 
} ?>

【问题讨论】:

    标签: php wordpress woocommerce advanced-custom-fields custom-fields


    【解决方案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)
    猜你喜欢
    • 2018-07-01
    • 2018-05-12
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2019-07-11
    • 1970-01-01
    相关资源
    最近更新 更多