ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-从购物车形式复选框中将字符串重选(是/否)到wordpress meta框

2019-10-30 02:39:23  阅读:190  来源: 互联网

标签:forms meta-boxes wordpress php


请原谅PHP noob问题…我在woocommerce购物车中添加了一个用于包装礼品的自定义复选框.我能够在自定义元框和订单摘要中获取返回到“订单”页面的值,但是我只能获取返回为null或“ 1”的值.我想返回“是”或“否”的值.在此先感谢您的任何建议.

这是我在功能中使用的代码.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>';
}

以下是表单结果返回给管理员的屏幕快照:

解决方法:

尝试改变这个

esc_attr($_POST['gift_wrapping'])

对此

(esc_attr($_POST['gift_wrapping'] = 1 ? 'yes' : ''))

我已经在一个为我工作的woocommerce测试站点上对此进行了测试.

如果勾选,将返回yes,如果取消勾选,则不返回任何内容.如果您沉迷于没有,那么您可以从此更改整行

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')));

标签:forms,meta-boxes,wordpress,php
来源: https://codeday.me/bug/20191030/1964791.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有