【问题标题】:Get a custom field in WooCommerce cart for variable products too using ACF使用 ACF 在 WooCommerce 购物车中为可变产品获取自定义字段
【发布时间】:2020-06-09 18:37:45
【问题描述】:

在 WooCommerce 中,我使用高级自定义字段插件来显示一个名为“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
}

如何让它也适用于可变产品?

【问题讨论】:

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


    【解决方案1】:

    将可变产品添加到购物车时,对于购物车商品购物车,您需要获取可变产品 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
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 2023-03-28
      • 2014-05-13
      • 2022-08-17
      • 2017-04-27
      • 2018-07-16
      • 2017-02-12
      • 2018-06-23
      • 2021-04-12
      相关资源
      最近更新 更多