在Woocommerce中,我使用一些自定义字段来表示产品规格,并将规格保存在post_meta中。
我正在尝试在post_meta
另一个产品规范中写下if循环。
我现在使用的代码是:
add_action( 'woocommerce_product_options_general_product_data', 'BTW_field' );
function BTW_field() {
woocommerce_wp_radio(
array(
'id' => '_BTW',
'default' => '21% BTW',
'required' => true,
'options' => array(
'Prijs is incl. 21% BTW' => '21% BTW',
'Margeproduct' => 'Marge Product',
)
)
);
}
add_action( 'woocommerce_process_product_meta', 'BTW_save' );
function BTW_save( $post_id ){
$BTW = $_POST['_BTW'];
if( !empty( $BTW ) )
update_post_meta( $post_id, '_BTW', esc_attr( $BTW ) );
}
现在我尝试重写BTW_save
函数,以便保存另一个post_meta
。
function BTW_save( $post_id ){
$BTW = $_POST['_BTW'];
if( !empty( $BTW ) ){
update_post_meta( $post_id, '_BTW', esc_attr( $BTW ) );
}
if ($BTW == "Margeproduct (vrijgesteld van BTW)"){
$BTW2 = "Margeproduct*"
} else {
$BTW2 = "21%"
}
update_post_meta( $post_id, '_BTW_NAME', esc_attr( $BTW2 ) );
}
我不知道如何检查$BTW
是否等于post_meta
_BTW
以及我如何重写它以便$BTW2
也会保存在帖子中meta为_BTW_NAME
。
答案 0 :(得分:0)
已更新:在设置2个不同的值时,最好使用选择字段。
此外,我在代码中对正确的变量命名和字段键命名进行了一些更改(您应该能够轻松地重命名它们,并记住建议使用小写和下划线)。
以下是代码:
add_action( 'woocommerce_product_options_general_product_data', 'add_btw_field' );
function add_btw_field() {
global $post;
// Get the selected value
$value = get_post_meta( $post->ID, '_btw', true );
if( empty( $value ) ) $value = 'btw'; // Default value
woocommerce_wp_select( array(
'id' => 'btw_select',
'label' => __( 'BTW-prijsopties', 'woocommerce' ),
'options' => array(
'btw' => __( '21% BTW', 'woocommerce' ),
'marge' => __( 'Marge Product', 'woocommerce' ),
),
'value' => $value, // Displaying the selected value
) );
}
add_action( 'woocommerce_process_product_meta', 'save_btw_field' );
function save_btw_field( $post_id ){
if( empty( $_POST['btw_select'] ) ) return; // exit (in case of)
update_post_meta( $post_id, '_btw', esc_attr( $_POST['btw_select'] ) );
if ( $_POST['btw_select'] == 'btw' )
$label = __( 'BTW 21%', 'woocommerce' );
else
$label = __( 'Margeproduct (vrijgesteld van BTW)', 'woocommerce' );
update_post_meta( $post_id, '_btw_label', esc_attr( $label ) );
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
经过测试和工作。你会得到类似的东西:
创建或更新产品时,默认,两个自定义字段都会保存为< btw'选项作为产品元数据......
您可以使用
post_meta
获取两个产品get_post_meta()
自定义字段值:// Set HERE the product ID (or get it dynamically) $product_id = 37; $btw = get_post_meta( $product_id, '_btw', true ); // Values can be 'yes' or 'no' $btw_label = get_post_meta( $product_id, '_btw_label', true ); // Output (testing): echo $btw_label;