Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce:在挂钩函数中获取产品变量自定义字段值_Php_Wordpress_Woocommerce_Custom Fields_Product Variations - Fatal编程技术网

Php WooCommerce:在挂钩函数中获取产品变量自定义字段值

Php WooCommerce:在挂钩函数中获取产品变量自定义字段值,php,wordpress,woocommerce,custom-fields,product-variations,Php,Wordpress,Woocommerce,Custom Fields,Product Variations,这就是我如何为产品变体添加管理自定义字段的方法: add_action( 'woocommerce_variation_options_pricing', 'add_custom_field_to_variations', 10, 3 ); function add_custom_field_to_variations( $loop, $variation_data, $variation ) { woocommerce_wp_text_input( array(

这就是我如何为产品变体添加管理自定义字段的方法:

add_action( 'woocommerce_variation_options_pricing', 'add_custom_field_to_variations', 10, 3 );
     
function add_custom_field_to_variations( $loop, $variation_data, $variation ) {
    woocommerce_wp_text_input( array(
        'id' => 'custom_field[' . $loop . ']',
        'class' => 'short',
        'label' => __( 'Custom Field', 'woocommerce' ),
        'value' => get_post_meta( $variation->ID, 'custom_field', true )
    ) );
}
在产品变体保存时保存自定义字段:

add_action( 'woocommerce_save_product_variation', 'save_custom_field_variations', 10, 2 );
function save_custom_field_variations( $variation_id, $i ) {
    $custom_field = $_POST['custom_field'][$i];
    if ( isset( $custom_field ) ) update_post_meta( $variation_id, 'custom_field', esc_attr( $custom_field ) );
}
将自定义字段值存储到变量数据中

add_filter( 'woocommerce_available_variation', 'add_custom_field_variation_data' );
function add_custom_field_variation_data( $variations ) {
    $variations ['custom_field'] = '<div class="woocommerce_custom_field">Custom Field: <span>' . get_post_meta( $variations[ 'variation_id' ], 'custom_field', true ) . '</span></div>';
    return $variations;
}

我只需要获取值(即浮点数):

las函数中有一些错误和遗漏的内容(见下文)

现在,有两种方法可以在挂钩函数中获取自定义字段值:

add_filter('woocommerce_variation_prices_price', 'get_custom_variable_price' )
function get_custom_variable_price() {

    global $post;
    $custom_value = get_post_meta( $variations[ 'variation_id' ], 'custom_field', true );
    $custom_value = (float)$custom_value;
    return $custom_value;   
}
1) 。使用
WC\u Data
get\u meta()

2) 。或者使用WordPress
get\u post\u meta()
函数(旧方法):

代码进入活动子主题(或活动主题)的functions.php文件。经过测试,两者都适用

重要提示:前端可能看不到结果,因为可变产品价格范围缓存在WooCommerce中以提高性能(请参阅下面的链接线程以更好地了解)

相关线程:


与您的其他功能相关的添加

自WooCommerce 3以来,您可以按如下方式更新第二和第三个功能:

add_action( 'woocommerce_admin_process_variation_object', 'save_custom_field_variation_value', 10, 2 );
function save_custom_field_variation_value( $variation, $i ) {
    if( isset($_POST['custom_field'][$i]) ) {
        $variation->update_meta_data( 'custom_field', floatval( sanitize_text_field($_POST['custom_field'][$i]) ) );
    }
}
和第三功能

add_filter( 'woocommerce_available_variation', 'add_variation_custom_field_value_to_variation_data', 10, 3 );
function add_variation_custom_field_value_to_variation_data( $variation_data, $product, $variation ) {
    if ( $value = $variation->get_meta( 'custom_field' ) ) {
        $variation_data['custom_field'] = '<div class="woocommerce_custom_field">' .__("Custom Field") . ': <span>' . $value . '</span></div>';
    }
    return $variation_data;
}
add_filter('woocommerce_available_variation','add_variation_custom_field_value_to_variation_data',10,3);
函数将变量自定义字段值添加到变量数据($variation\u data,$product,$variation){
如果($value=$variation->get_meta('custom_field')){
$variation_data['custom_field']=''.''.''(“custom field”):''.$value';
}
返回$U数据;
}

您在哪里使用最后一个函数?…请添加更多上下文,因为您的问题实际上不清楚…我在“woocommerce\u variation\u price\u price”上使用最后一个函数。这样做的目的是让自定义值乘以变化产品价格。我编辑了您的问题,并回答了您的问题。请提供以下答案的反馈。Hi@loicTheAztec感谢您的支持和努力。我尝试了这两个版本,但都不起作用,前端出现严重错误。我想我问得不对,让我再解释一遍;检查:您也回答了这个问题,我需要的是让自定义添加的变量字段值相乘。2) 对于主题版本:
函数get_price_multiplier(){return 2;//x2用于测试//我需要在此处加载自定义字段值}
@Bilal抱歉,两个代码中都有错误…请重试,它现在应该可以工作了。如果这个答案回答了你的问题,你可以请你回答,如果你喜欢/想要,你也可以请你回答,谢谢。实际上它没有检索自定义字段ID,get\u meta也不起作用,而且我尝试了get\u the\u ID()但他们都回来了null@Bilal对我来说,它在我的测试服务器上工作;
add_action( 'woocommerce_admin_process_variation_object', 'save_custom_field_variation_value', 10, 2 );
function save_custom_field_variation_value( $variation, $i ) {
    if( isset($_POST['custom_field'][$i]) ) {
        $variation->update_meta_data( 'custom_field', floatval( sanitize_text_field($_POST['custom_field'][$i]) ) );
    }
}
add_filter( 'woocommerce_available_variation', 'add_variation_custom_field_value_to_variation_data', 10, 3 );
function add_variation_custom_field_value_to_variation_data( $variation_data, $product, $variation ) {
    if ( $value = $variation->get_meta( 'custom_field' ) ) {
        $variation_data['custom_field'] = '<div class="woocommerce_custom_field">' .__("Custom Field") . ': <span>' . $value . '</span></div>';
    }
    return $variation_data;
}