ACF,woocommerce购物车中的发布对象

时间:2018-12-03 14:25:16

标签: woocommerce advanced-custom-fields

我希望这是一个愚蠢的问题,但目前无法找到明智的解决方案。

我在“产品”页面上有一个自定义字段-这是“关系”字段-我想在购物车页面中为每个产品显示我的RF字段。

更具体地说:我有一个与品牌相关的产品。该品牌有一个“发货时间”字段。

从某种意义上说,目前我的功能可以正常工作,因为它显示了请求值,但仅适用于购物车中的第一项。 那是我在function.php中的代码

add_filter( 'woocommerce_get_item_data', 'wc_add_shipping_to_cart', 10, 2 );
function wc_add_shipping_to_cart( $cart_data, $cart_item ) 
{ 

$custom_shipping = array();

if( !empty( $cart_data ) )
    $custom_shipping = $cart_data;

// Get the product ID
$product_id = $cart_item['product_id'];
$custom_field_value = get_post_meta( $product_id, 'brand_select', true );
$display_brand_shipping = get_field('shipping_time_brand', $custom_field_value); 

if( $custom_field_value = get_post_meta( $product_id, 'brand_select', true ) )
    $custom_shipping[] = array(
        'name'      => __( 'Shipping', 'woocommerce' ),
        'value'     => $display_brand_shipping,
        'display'   => $display_brand_shipping,
    );

return $custom_shipping; }

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

您的代码不可测试,因为它不可能重现与产品自定义字段和ACF字段相关的问题,但是可以通过以下方式进行简化:

add_filter( 'woocommerce_get_item_data', 'wc_add_shipping_to_cart', 10, 2 );
function wc_add_shipping_to_cart( $cart_item_data, $cart_item ) 
{ 
    if( $brand_select = get_post_meta( $cart_item['product_id'], 'brand_select', true ) ) {
        if( $shipping_time = get_field('shipping_time_brand', $brand_select ) ) {
            $cart_item_data[] = array(
                'name'      => __( 'Shipping', 'woocommerce' ),
                'value'     => $shipping_time,
            );
        }
    }
    return $cart_item_data;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。