为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 WooCommerce 结帐中保存自定义复选框值

无法从 WooCommerce 结帐中保存自定义复选框值

PHP
幕布斯7119047 2023-03-26 14:53:03
我创建了一个功能,可以在结算表格后将复选框添加到 WooCommerce 结帐中。出现复选框,前端一切正常。add_filter( 'woocommerce_after_checkout_billing_form' , 'add_field_sendy_woocommerce_agree', 9);function add_field_sendy_woocommerce_agree( ) {    woocommerce_form_field( 'sendy_woocommerce_agree', array(    'type'          => 'checkbox',    'label'         => __('Subscribe to our Newsletter.'),    'required'  => false,    'default' => 1     ),  WC()->checkout->get_value( 'sendy_woocommerce_agree' ));                               }问题是复选框没有保存为元数据。在wp_postmeta表中,_sendy_woocommerce_agree提交后缺少元键。所以我无法访问它$xyz = $order->get_meta( '_sendy_woocommerce_agree' );我究竟做错了什么?
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

通过以下方式尝试一下


function add_field_sendy_woocommerce_agree( $checkout ) {


    woocommerce_form_field( 'sendy_woocommerce_agree', array(

        'type'          => 'checkbox',

        'label'         => __('Subscribe to our Newsletter.'),

        'required'  => false,

        'default' => 1 

    ),  $checkout->get_value( 'sendy_woocommerce_agree' ));                               

}

add_filter( 'woocommerce_after_checkout_billing_form' , 'add_field_sendy_woocommerce_agree', 10, 1 );


// Save

function action_woocommerce_checkout_create_order( $order, $data ) {

    if ( isset($_POST['sendy_woocommerce_agree']) && ! empty($_POST['sendy_woocommerce_agree']) ) {

        $order->update_meta_data( 'sendy_woocommerce_agree', sanitize_text_field( $_POST['sendy_woocommerce_agree'] ) );

    } 

}

add_action( 'woocommerce_checkout_create_order', 'action_woocommerce_checkout_create_order', 10, 2 );


// Display the custom field value on admin order pages after billing adress:

function action_woocommerce_admin_order_data_after_billing_address( $order ) {

    echo '<p><strong>'.__('Sendy').':</strong> ' . $order->get_meta('sendy_woocommerce_agree') . '</p>'; 

}

add_action( 'woocommerce_admin_order_data_after_billing_address', 'action_woocommerce_admin_order_data_after_billing_address', 10, 1 );



查看完整回答
反对 回复 2023-03-26
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信