从购物车表单复选框返回字符串(是/否)到 wordpress 元框
Posted
技术标签:
【中文标题】从购物车表单复选框返回字符串(是/否)到 wordpress 元框【英文标题】:Retun a string (yes/no) from cart form checkbox to wordpress meta box 【发布时间】:2014-01-16 04:18:08 【问题描述】:请原谅 php 菜鸟问题...我在我的 woocommerce 购物车中添加了一个用于礼品包装的自定义复选框。我可以在自定义元框和订单摘要中获取返回“订单”页面的值,但我只能获取返回为 null 或“1”的值。我想返回“是”或“否”的值。提前感谢您的任何建议。
这是我在 FUNCTIONS.PHP 中使用的代码(根据 WOOCOMMERCE 文档定制):
/在结账时添加礼品包装字段/
add_action('woocommerce_after_order_notes', 'gift_wrapping_field');
function gift_wrapping_field( $checkout )
woocommerce_form_field( 'gift_wrapping', array(
'type' => 'checkbox',
'class' => array('input-checkbox'),
'label' => __('Include Free Gift Wrapping'),
'required' => false,
), $checkout->get_value( 'gift_wrapping' ));
/处理结帐/
add_action('woocommerce_checkout_process', 'gift_wrapping_field_process');
function my_custom_checkout_field_process()
global $woocommerce;
// Check if set, if its not set add an error.
if (!$_POST['terms_conditions'])
$woocommerce->add_error( __('Please agree to terms and conditions.') );
/使用字段值更新订单元数据/
add_action('woocommerce_checkout_update_order_meta', 'gift_wrapping_field_update_order_meta');
function gift_wrapping_field_update_order_meta( $order_id )
if ($_POST['gift_wrapping']) update_post_meta( $order_id, 'Include Free Gift Wrapping', esc_attr($_POST['gift_wrapping']));
/*Update the order summary with field value*/
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order)
echo '<p><strong>'.__('Include Free Gift Wrapping').':</strong> ' . $order->order_custom_fields['Include Free Gift Wrapping'][0] . '</p>';
这是从表单结果返回给管理员的屏幕截图:
【问题讨论】:
感谢您重新格式化代码,@The Humble Rat... 不胜感激! 【参考方案1】:尝试更改此设置
esc_attr($_POST['gift_wrapping'])
到这里
(esc_attr($_POST['gift_wrapping'] = 1 ? 'yes' : ''))
我已经在我拥有并为我工作的 woocommerce 测试网站上对此进行了测试。
如果勾选,这将返回是,如果未勾选,则返回任何内容。如果你一心一意没有,那么你可以从这里改变整行
if ($_POST['gift_wrapping']) update_post_meta( $order_id, 'Include Free Gift Wrapping', esc_attr($_POST['gift_wrapping']));
到这个。即使在技术上尚未设置该值,这也会强制保存该值。
update_post_meta( $order_id, 'My Field', (esc_attr(isset($_POST['gift_wrapping']) && $_POST['gift_wrapping'] == 1 ? 'yes' : 'no')));
【讨论】:
谢谢!第一个建议效果很好。即使将“我的领域”调整为“包括免费礼品包装”,我也无法让“不”工作。不知道为什么,因为你所做的一切似乎都是有道理的,但我稍后会玩。 非常感谢您的帮助!【参考方案2】:要显示“不”,不妨试试这个
function gift_wrapping_field_update_order_meta( $order_id )
$gift_wrapping = 'no';
if ($_POST['gift_wrapping'])
$gift_wrapping = 'yes';
update_post_meta( $order_id, 'Include Free Gift Wrapping', esc_attr($gift_wrapping) );
【讨论】:
以上是关于从购物车表单复选框返回字符串(是/否)到 wordpress 元框的主要内容,如果未能解决你的问题,请参考以下文章