Woocommerce-在使用get_value插入钩子函数后,结帐列上的空白内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Woocommerce-在使用get_value插入钩子函数后,结帐列上的空白内容相关的知识,希望对你有一定的参考价值。
我一直试图在Woocommerce Checkout页面的一个“Order Hooks”中挂钩这个函数:
add_action( 'woocommerce_checkout_before_order_review', 'add_box_conditional' );
function add_box_conditional ( $checkout ) {
woocommerce_form_field( 'test', array(
'type' => 'checkbox',
'class' => array('test form-row-wide'),
'label' => __('conditional test'),
'placeholder' => __(''),
), $checkout->get_value( 'test' ));
}
如果我尝试在任何订单挂钩中获取自定义框的值,订单信息只会挂起并停止加载。我尝试过使用其他类型的自定义字段,但同样的情况也是如此。
如果我将函数挂钩,订单内容完美无缺。自定义复选框将用于添加费用(后验证),因为它是我们的商店非常重要的选项,我希望它在订单详细信息中,因此它可以有一个强烈关注。有没有办法让函数在这些钩子上工作,或者我应该把它放在任何地方并用简单但不那么干净的CSS覆盖来移动它?
感谢您的帮助和关注。
答案
你不能像$checkout->get_value( 'test' ));
那样获得价值。钩woocommerce_checkout_create_order
并从那里获得$ _POST
的价值。如果选中该复选框,则向订单添加自定义费用。
像这样:
function add_box_conditional() {
woocommerce_form_field( 'test', array(
'type' => 'checkbox',
'class' => array( 'test form-row-wide' ),
'label' => __( 'conditional test' ),
'placeholder' => __( '' ),
) );
}
add_action( 'woocommerce_checkout_before_order_review', 'add_box_conditional' );
function edit_order( $order, $data ) {
if( ! isset( $_POST[ 'test' ] ) ) {
return;
}
$checkbox_value = filter_var( $_POST[ 'test' ], FILTER_SANITIZE_NUMBER_INT );
if( $checkbox_value ){
$fee = 20;
$item = new WC_Order_Item_Fee();
$item->set_props( array(
'name' => __( 'Custom fee', 'textdomain' ),
'tax_class' => 0,
'total' => $fee,
'total_tax' => 0,
'order_id' => $order->get_id(),
) );
$item->save();
$order->add_item( $item );
$order->calculate_totals();
}
}
add_action( 'woocommerce_checkout_create_order', 'edit_order', 10, 2 );
以上是关于Woocommerce-在使用get_value插入钩子函数后,结帐列上的空白内容的主要内容,如果未能解决你的问题,请参考以下文章
woocommerce上的多种货币,可根据位置自动切换[关闭]
从 WooCommerce 的“客户”角色中隐藏我的帐户中的帐户资金充值
FutureWarning: get_value is deprecated and will be removed in a future release. Please use .at[] or