Php Can';无法获取商业产品的自定义字段

Php Can';无法获取商业产品的自定义字段,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在尝试使用此函数获取自定义字段并乘以产品价格。我得到的是产品价格,但在打印自定义字段时,我只得到零。。我不明白为什么,我也尝试了get\u metadata()和get\u post\u custom()。。但什么都不管用 function filter_woocommerce_cart_product_subtotal( $product_subtotal, $product, $quantity, $instance ) { $fields = get_post

我正在尝试使用此函数获取自定义字段并乘以产品价格。我得到的是产品价格,但在打印自定义字段时,我只得到零。。我不明白为什么,我也尝试了
get\u metadata()
get\u post\u custom()
。。但什么都不管用

    function filter_woocommerce_cart_product_subtotal( $product_subtotal, $product, $quantity, $instance ) { 
        $fields = get_post_meta(get_the_id(), false);
        $add_on = $product->get_price()*$fields[0] + $product->get_price()*$fields[1] + $product- 
                  >get_price()*0.75*$fields[2];

        return $product_subtotal + $add_on; 
}; 
add_filter( 'woocommerce_cart_product_subtotal', 'filter_woocommerce_cart_product_subtotal', 10, 4 ); 
我也试着得到单字段,但总是得到零

我可以在下面的函数中获取自定义字段并将其保存在全局变量中,但当我尝试访问上面的函数中的全局变量时,我再次得到零

function tour_product_add_on_cart_item_data( $cart_item, $product_id, $cart ){
/*
if( isset( $_POST['time_add_on'] ) ) {
    $cart_item['time_add_on'] = sanitize_text_field( $_POST['time_add_on'] );
}
*/
if( isset( $_POST['date_add_on'] ) ) {
    $cart_item['date_add_on'] = sanitize_text_field( $_POST['date_add_on'] );
}
if( isset( $_POST['place_add_on'] ) ) {
    $cart_item['place_add_on'] = sanitize_text_field( $_POST['place_add_on'] );
}
if( isset( $_POST['adult_add_on'] ) ) {
    $cart_item['adult_add_on'] = sanitize_text_field( $_POST['adult_add_on'] );
}
if( isset( $_POST['child_add_on'] ) ) {
    $cart_item['child_add_on'] = sanitize_text_field( $_POST['child_add_on'] );
}
if( isset( $_POST['infant_add_on'] ) ) {
    $cart_item['infant_add_on'] = sanitize_text_field( $_POST['infant_add_on'] );
}
    $product = wc_get_product($product_id);
    $GLOBALS["fee"] = $_POST['adult_add_on']*$product->get_price() + 
 $_POST['child_add_on']*$product->get_price() + $_POST['infant_add_on']*0.75*$product->get_price();
    return $cart_item;
}

get\u post\u meta()
第二个参数是元键值。因此,您应该使用例如
$date\u add\u on=get\u post\u meta(get\u id(),'date\u add\u on')

因此,我已经解决了这个问题。当您向woocommerce产品或wordpress帖子添加自定义字段时,必须更新其元数据。下面是添加自定义字段所需遵循的每个步骤的良好教程


是的,我尝试过用键获取单个字段,比如
get\u post\u meta(get\u id(),'date\u add\u on',true)
但是使用
$product->get\u id()
尝试过,仍然不起作用。使用
get_id()
$product->get_id()
获取相同的id。您是否尝试过
$date\u add\u on=$product->get_meta('date\u add\u on',true)
//创建产品的对象实例$\u product=new WC\u product($product\u id);//获取定义的产品属性$product_attr=$\u product->get_attributes();//显示值数组(仅用于测试和查看输出)echo var_dump($product_attr)
product_attr
返回
array(0){}