Php 将新自定义字段添加到电子商务签出

Php 将新自定义字段添加到电子商务签出,php,wordpress,woocommerce,hook-woocommerce,checkout,Php,Wordpress,Woocommerce,Hook Woocommerce,Checkout,我有应该可以工作的代码,但由于某种原因它不能工作。我想使用以下代码在Woocommerce checkout下添加一个名为“City”的新自定义字段: // Display a custom checkout select field after Billing form add_action( 'woocommerce_after_checkout_billing_form', 'my_custom_checkout_field', 10, 1 ); function my_custo

我有应该可以工作的代码,但由于某种原因它不能工作。我想使用以下代码在Woocommerce checkout下添加一个名为“City”的新自定义字段:

    // Display a custom checkout select field after Billing form
add_action( 'woocommerce_after_checkout_billing_form', 'my_custom_checkout_field', 10, 1 );
function my_custom_checkout_field( $checkout ) {
    echo '<div id="my_custom_checkout_field">
    ' . __('City') . '';

    woocommerce_form_field( 'delivery_date', array(
        'type'          => 'select',
        'options'     => array(
            'Colombo 01' => __('Colombo 01', 'woocommerce' ),
            'Colombo 02' => __('Colombo 02', 'woocommerce' ),
            'Colombo 03' => __('Colombo 03', 'woocommerce' ),
            'Colombo 04' => __('Colombo 04', 'woocommerce' ),
            'Colombo 06' => __('Colombo 06', 'woocommerce' ),
            'Colombo 07' => __('Colombo 07', 'woocommerce' ),
            'Colombo 08' => __('Colombo 08', 'woocommerce' ),
            'Colombo 09' => __('Colombo 09', 'woocommerce' ),
            'Colombo 10' => __('Colombo 10', 'woocommerce' ),
            'Colombo 11' => __('Colombo 11', 'woocommerce' ),
            'Colombo 01' => __('Colombo 01', 'woocommerce' ),
            'Dehiwela' => __('Dehiwela', 'woocommerce' ),
            'Attidiya' => __('Attidiya', 'woocommerce' ),
            'Mount Lavinia' => __('Mount Lavinia', 'woocommerce' ),
            'Ratmalana' => __('Ratmalana', 'woocommerce' ),
            'Maligawatte' => __('Maligawatte', 'woocommerce' ),
            'Kotikawatta' => __('Kotikawatta', 'woocommerce' ),
            'Rajagiriya' => __('Rajagiriya', 'woocommerce' ),
            'Peliyagoda' => __('Peliyagoda', 'woocommerce' ),
            'Kelaniya' => __('Kelaniya', 'woocommerce' ),
            'Kiribathgoda' => __('Kiribathgoda', 'woocommerce' ),
            'Wattala' => __('Wattala', 'woocommerce' )),
        'class'         => array('my-field-class form-row-wide'),
        'placeholder'   => __('Select City'),
        ), $checkout->get_value( 'city_custom' ));

    echo '</div>';
}

// Save the dropdown custom field selected value as order custom meta data:
add_action( 'woocommerce_checkout_create_order', 'my_custom_checkout_field_update_order_meta', 10, 2 );
function my_custom_checkout_field_update_order_meta( $order, $data ) {
    if ( isset($_POST['city_custom']) && ! empty($_POST['city_custom']) ) {
        $order->update_meta_data( 'City', sanitize_text_field( $_POST['city_custom'] ) );
    } 
}

// Display the custom field value on admin order pages after billing adress:
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>'.__('City').':</strong> ' . $order->get_meta('city_custom') . '</p>'; 
}

// Display the custom field value on email notifications:
add_action( 'woocommerce_email_after_order_table', 'custom_woocommerce_email_order_meta_fields', 10, 4 );
function custom_woocommerce_email_order_meta_fields( $order, $sent_to_admin, $plain_text, $email ) {
    echo '<p><strong>'.__('City').':</strong> ' . $order->get_meta('city_custom') . '</p>';
} 
//在帐单表单后显示自定义签出选择字段
添加操作('woocommerce\u在结帐单之后,'my\u custom\u checkout\u field',10,1);
函数my_custom_checkout_字段($checkout){
回声'
“城市”;
woocommerce\u表单\u字段('delivery\u date',数组(
'类型'=>'选择',
“选项”=>数组(
“科伦坡01”=>“‘科伦坡01’、‘woocommerce’”,
“科伦坡02”=>“‘科伦坡02’、‘woocommerce’”,
“科伦坡03”=>“‘科伦坡03’、‘woocommerce’”,
“科伦坡04”=>“‘科伦坡04’、‘woocommerce’”,
“科伦坡06”=>“‘科伦坡06’、‘woocommerce’”,
“科伦坡07”=>“‘科伦坡07’、‘woocommerce’”,
“科伦坡08”=>“‘科伦坡08’、‘woocommerce’”,
“科伦坡09”=>“‘科伦坡09’、‘woocommerce’”,
“科伦坡10”=>“‘科伦坡10’、‘woocommerce’”,
“科伦坡11号”=>“‘科伦坡11号’、‘woocommerce’”,
“科伦坡01”=>“‘科伦坡01’、‘woocommerce’”,
“德希韦拉”=>“‘德希韦拉’、‘伍科’”,
“Attidiya”=>“‘Attidiya’、‘woocommerce’”,
“拉维尼亚山”=>“‘拉维尼亚山’、‘伍科’”,
“Ratmalana”=>“‘Ratmalana’、‘woocommerce’”,
“Maligawatte”=>“‘Maligawatte’、‘woocommerce’”,
“Kotikawatta”=>“‘Kotikawatta’、‘woocommerce’”,
“Rajagiriya”=>“‘Rajagiriya’、‘woocommerce’”,
‘Peliyagoda’=>‘Peliyagoda’、‘woocommerce’,
“Kelaniya”=>“‘Kelaniya’、‘woocommerce’”,
“基里巴斯戈达”=>“‘基里巴斯戈达’、‘woocommerce’”,
‘Wattala’=>(Wattala’、‘woocommerce’),
'class'=>array('my-field-class表单行宽'),
“占位符”=>(选择城市),
),$checkout->get_value('city_custom');
回声';
}
//将下拉自定义字段选定值另存为订单自定义元数据:
添加操作('woocommerce\u checkout\u create\u order'、'my\u custom\u checkout\u field\u update\u order\u meta',10,2);
函数my\u custom\u checkout\u field\u update\u order\u meta($order,$data){
如果(isset($\u POST['city\u custom'])和&!empty($\u POST['city\u custom'])){
$order->update_meta_数据('City',sanitize_text_字段($_POST['City_custom']));
} 
}
//在账单地址后的管理订单页面上显示自定义字段值:
添加操作('woocommerce\u admin\u order\u data\u after\u billing\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){
回显“。”城市“:”。$order->get_meta(“城市自定义”)。

”; } //显示电子邮件通知上的自定义字段值: 添加操作('woocommerce\u email\u在订单表之后,'custom\u woocommerce\u email\u order\u meta\u字段',10,4); 功能自定义\u商业\u电子邮件\u订单\u元\u字段($order、$sent\u to\u admin、$plain\u text、$email){ 回显“。”城市“:”。$order->get_meta(“城市自定义”)。

”; }
但由于某些原因,我无法在后端(客户将城市视为标签,但没有从客户处选择的数据)和邮件中查看订单详细信息。。也可以在其他计费信息中显示此值吗?这里有人帮忙吗?我使用最新的Woocommerce 4.0.1

非常感谢

您将
交货日期
城市
城市
混用,这会给您不同的值,这就是您的问题所在

//在帐单表单后显示自定义签出选择字段
添加操作('woocommerce\u在结帐单之后,'my\u custom\u checkout\u field',10,1);
函数my_custom_checkout_字段($checkout){
回声'
“城市”;
woocommerce\u表单\u字段('city\u custom',数组(
'类型'=>'选择',
“选项”=>数组(
“科伦坡01”=>“‘科伦坡01’、‘woocommerce’”,
“科伦坡02”=>“‘科伦坡02’、‘woocommerce’”,
“科伦坡03”=>“‘科伦坡03’、‘woocommerce’”,
“科伦坡04”=>“‘科伦坡04’、‘woocommerce’”,
“科伦坡06”=>“‘科伦坡06’、‘woocommerce’”,
“科伦坡07”=>“‘科伦坡07’、‘woocommerce’”,
“科伦坡08”=>“‘科伦坡08’、‘woocommerce’”,
“科伦坡09”=>“‘科伦坡09’、‘woocommerce’”,
“科伦坡10”=>“‘科伦坡10’、‘woocommerce’”,
“科伦坡11号”=>“‘科伦坡11号’、‘woocommerce’”,
“科伦坡01”=>“‘科伦坡01’、‘woocommerce’”,
“德希韦拉”=>“‘德希韦拉’、‘伍科’”,
“Attidiya”=>“‘Attidiya’、‘woocommerce’”,
“拉维尼亚山”=>“‘拉维尼亚山’、‘伍科’”,
“Ratmalana”=>“‘Ratmalana’、‘woocommerce’”,
“Maligawatte”=>“‘Maligawatte’、‘woocommerce’”,
“Kotikawatta”=>“‘Kotikawatta’、‘woocommerce’”,
“Rajagiriya”=>“‘Rajagiriya’、‘woocommerce’”,
‘Peliyagoda’=>‘Peliyagoda’、‘woocommerce’,
“Kelaniya”=>“‘Kelaniya’、‘woocommerce’”,
“基里巴斯戈达”=>“‘基里巴斯戈达’、‘woocommerce’”,
‘Wattala’=>(Wattala’、‘woocommerce’),
'class'=>array('my-field-class表单行宽'),
“占位符”=>(选择城市),
),$checkout->get_value('city_custom');
回声';
}
//将下拉自定义字段选定值另存为订单自定义元数据:
添加操作('woocommerce\u checkout\u create\u order'、'my\u custom\u checkout\u field\u update\u order\u meta',10,2);
函数my\u custom\u checkout\u field\u update\u order\u meta($order,$data){
如果(isset($\u POST['city\u custom'])和&!empty($\u POST['city\u custom'])){
$order->更新元数据(