为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ACF 在 WooCommerce 购物车中获取可变产品的自定义字段

使用 ACF 在 WooCommerce 购物车中获取可变产品的自定义字段

PHP
沧海一幻觉 2023-05-12 15:25:44
在 WooCommerce 中,我使用 Advanced Custom Fields 插件来显示名为“product_cart_image”的自定义字段(图像),它替换了购物车中产品的默认图像。该代码适用于简单产品,但不适用于可变产品。对于这些,我得到了默认图像。以下代码进入cart.php模板文件:foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {    $_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );    $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );     ?>    <span class="product-thumbnail">    <?php    $product_image      = $_product->get_image();    $product_cart_image = get_field('product_cart_image', $_product->get_id());    if ( ! empty ( $product_cart_image ) ) {        $product_image = wp_get_attachment_image( $product_cart_image['ID'] );    }    $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $product_image, $cart_item, $cart_item_key );    if ( ! $product_permalink ) {        echo $thumbnail;    } else {        printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail );     }    ?>    </span>    <?php}我怎样才能让它也适用于可变产品?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

将可变产品添加到购物车时,对于购物车项目 cart,您需要获取可变产品 ID 而不是变体 ID,因此您将替换以下行:


$product_cart_image = get_field('product_cart_image', $_product->get_id());

经过:


$product_cart_image = get_field('product_cart_image', $cart_item['product_id']);

现在它应该可以工作了……所以在你的代码中:


foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

    $_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );

    $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); 

    ?>

    <span class="product-thumbnail">

    <?php

    $product_image      = $_product->get_image();

    $product_cart_image = get_field('product_cart_image', $cart_item['product_id']);


    if ( ! empty ( $product_cart_image ) ) {

        $product_image = wp_get_attachment_image( $product_cart_image['ID'] );

    }


    $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $product_image, $cart_item, $cart_item_key );


    if ( ! $product_permalink ) {

        echo $thumbnail;

    } else {

        printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail ); 

    }

    ?>

    </span>

    <?php

}


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信