Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Woocommerce显示管理订单详细信息上的自定义字段数据_Php_Wordpress_Woocommerce_Checkout_Orders - Fatal编程技术网

Php Woocommerce显示管理订单详细信息上的自定义字段数据

Php Woocommerce显示管理订单详细信息上的自定义字段数据,php,wordpress,woocommerce,checkout,orders,Php,Wordpress,Woocommerce,Checkout,Orders,我正在使用一个自定义的结帐字段,在我的woocommerce商店的结帐页面上为我的客户提供一个“发送到业务地址”选项。大部分代码工作正常,但我无法显示他们是否选中了后端管理订单详细信息中的复选框 我已将自定义结帐字段添加到我的woocommerce商店,并将数据保存到订单元: //add custom checkout field add_filter( 'woocommerce_after_checkout_billing_form', 'gon_business_address_checkb

我正在使用一个自定义的结帐字段,在我的woocommerce商店的结帐页面上为我的客户提供一个“发送到业务地址”选项。大部分代码工作正常,但我无法显示他们是否选中了后端管理订单详细信息中的复选框

我已将自定义结帐字段添加到我的woocommerce商店,并将数据保存到订单元:

//add custom checkout field
add_filter( 'woocommerce_after_checkout_billing_form', 'gon_business_address_checkbox_field' );

function gon_business_address_checkbox_field( $checkout ){
    woocommerce_form_field( 'business_address_checkbox', array(
        'label'       => __('<h3 id="business_address_label">Check this box if you are shipping to a business.</h3>', 'woocommerce'),
        'required'    => false,
        'clear'       => false,
        'type'        => 'checkbox'
    ), $checkout->get_value( 'business_address_checkbox' ));
}


//update order meta
add_action('woocommerce_checkout_update_order_meta', 'gon_update_order_meta_business_address');

function gon_update_order_meta_business_address( $order_id ) {
    if ($_POST['business_address_checkbox']) update_post_meta( $order_id, 'Business Address?', 
    esc_attr($_POST['business_address_checkbox']));
}
//添加自定义签出字段
添加过滤器('woocommerce'在结帐单之后,'gon'业务地址\u复选框\u字段');
函数gon\业务\地址\复选框\字段($checkout){
woocommerce\u表单\u字段('business\u address\u checkbox',数组(
“标签”=>\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
“必需”=>false,
“清除”=>错误,
'键入'=>'复选框'
),$checkout->get_value('business_address_checkbox');
}
//更新订单元
添加操作(“woocommerce\u checkout\u update\u order\u meta”、“gon\u update\u order\u meta\u business\u address”);
函数gon\u更新\u订单\u元\u业务\u地址($order\u id){
如果($\u POST['business\u address\u checkbox'])更新\u POST\u meta($order\u id,'business address?'),
esc_attr($_POST['business_address_checkbox']);
}
这里是我试图在管理命令部分显示这些数据的地方。我已经尽可能地关注了前面关于这方面的话题,但没有任何效果

// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . get_post_meta( $order->get_id(), '_business_address_checkbox', true ) . '</p>';
}
//在管理订单编辑页面上显示字段值
添加操作('woocommerce\u admin\u order\u data\u after\u shipping\u address'、'my\u custom\u checkout\u field\u display\u admin\u order\u meta',10,1);
函数my\u custom\u checkout\u field\u display\u admin\u order\u meta($order){
回显“”。(发送到业务地址“,”woocommerce“):”。获取发布元数据($order->get_id(),“'业务地址'复选框',true)。

”; }
这个问题是否可能是因为我没有以正确的方式使用复选框?奇怪的是,通过使用以下代码,我可以根据自己的意愿在订单电子邮件上打印信息:

add_filter( 'woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys' );
function my_custom_checkout_field_order_meta_keys( ) {
    if($_POST['business_address_checkbox']){
        $ship_to = 'YES';
    } else {
        $ship_to = 'NO';
    }
    echo '<h3>Ship to a business address? : '.$ship_to.'</h3>';
}
add_filter('woocommerce_email_order_meta_keys'、'my_custom_checkout_field_order_meta_keys');
函数我的\自定义\签出\字段\顺序\元\键(){
如果($\u POST[“业务地址”复选框]){
$ship_to='YES';
}否则{
$ship_to='NO';
}
echo“发送到公司地址?”:“.$Ship_to.”;
}

当您保存此自定义字段数据时,请使用
meta_键
“业务地址”
…因此您需要使用此
meta_键
以这种方式检索数据:

// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'custom_checkout_field_display_admin_order_meta', 10, 1 );
function custom_checkout_field_display_admin_order_meta( $order ){
    $business_address = get_post_meta( $order->get_id(), 'Business Address?', true );
    if( ! empty( $business_address ) )
        echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . $business_address . '</p>';
}
//在管理订单编辑页面上显示字段值
添加操作('woocommerce\u admin\u order\u data\u after\u shipping\u address'、'custom\u checkout\u field\u display\u admin\u order\u meta',10,1);
功能自定义\签出\字段\显示\管理\订单\元($order){
$business\u address=get\u post\u meta($order->get\u id(),'business address',true);
如果(!空($business_address))
回显“”。uuu('Ship to a Business Address','woocommerce'):“.$Business\u Address.”

”; }
代码位于活动子主题(或主题)的function.php文件或任何插件文件中


在WooCommerce 3和works上测试。

谢谢@LoicTheAztec。似乎我误解了update_post_meta()函数。现在工作正常!在我眼里你是一个真正的战士。