我正在建立一个woocommerce网站,我在产品页面上有一些输入字段。一个是收件人电子邮件(用于礼品车)。一切正常,收件人的电子邮件保存在订单上,但我希望能够将电子邮件地址传递给更新\\u meta\\u数据的功能,以便我可以在代码的其他部分使用(即向收件人发送单独的电子邮件以兑换卡)。
以下是我尝试使用的函数:
add_action(\'woocommerce_checkout_update_order_meta\',function( $order_id, $posted ) {
$order = wc_get_order( $order_id );
$order->update_meta_data( \'recipient_email\', "[email protected]" );
$order->save();
} , 10, 2);
其中“joe@acme“是,我想从表单中传递值。表单使用自定义表单插件呈现。表单的html如下所示:
<input name="recipient_email" id="recipient_email" data-type="text" data-req="on" data-message="no email" maxlength="255" style="width: 100%; padding: 0px;" type="text">
正如我所说,表单可以将收件人的电子邮件保存到订单中,但不能作为post元数据,因此我不知道如何检索并存储为变量,以便用于代码的其他部分。
SO网友:Benoti
您可以使用$posted
参数以获取函数中的正确值。
add_action(\'woocommerce_checkout_update_order_meta\',function( $order_id, $posted ) {
$order = wc_get_order( $order_id );
$order->update_meta_data( \'recipient_email\', $posted[\'recipient_email\'] );
$order->save();
} , 10, 2);
验证$posted是一个数组,而不是在$posted上具有var\\u转储的对象。如果是对象替换
$posted[\'recipient_email\']
具有
$posted->recipient_email
希望有帮助:)