首页 > 解决方案 > woocommerce 在运输表下添加自定义字段(我的帐户订单视图/谢谢)

问题描述

借助这 2 个帖子(WooCommerce 可编辑的自定义结帐字段并以格式化的地址显示)(在 Woocommerce 的客户运输部分下向管理员用户添加其他字段),我在结帐、我的帐户、单个订单、管理员中添加了自定义字段和电子邮件。但是还有 3 个区域我想展示这个自定义字段,但我找不到展示它们所需的钩子。我在网上搜索但完全没有运气。如果有人可以指导我,我会很高兴的。

1- 在感谢页面中的送货地址表下 感谢页面中的送货地址表

2- 在我的帐户页面的订单视图中的送货地址表下 订单视图中的送货地址表

3- 我想在我的帐户地址中显示该字段。但它仅在我单击编辑时可见 在此处输入图像描述

这是我用来添加额外字段的代码及其到目前为止的工作

// HOUSE NUMBER EXTRA FIELD
// display shipping House Number in checkout and my account edit shipping address
add_filter( 'woocommerce_shipping_fields', 'add_shipping_house_number_field' );
function add_shipping_house_number_field( $fields ) {
   $fields['shipping_house_number'] = array(
      'label' => __( 'House Number', 'woocommerce' ),
      //'required' => true,
      'class' => array( 'form-row-first' ),
      'priority' => 61,
   );
   return $fields;
}

// Display editable custom fields on admin single order pages (backend new order) edit pages inside edit shipping section
add_filter( 'woocommerce_admin_shipping_fields' , 'add_order_admin_edit_shipping_house_number' );
function add_order_admin_edit_shipping_house_number( $fields ) {
    // Include shipping house_number as editable field
    $fields['house_number'] = array( 'label' => __( 'House Number', 'woocommerce' ), 'show' => '0' );

    return $fields;
}

// Load Ajax custom field data as customer billing/shipping address fields in backend new order (data will be pulled from the database)
add_filter( 'woocommerce_ajax_get_customer_details' , 'add_custom_fields_to_ajax_customer_details', 10, 3 );
function add_custom_fields_to_ajax_customer_details( $data, $customer, $user_id ) {
    
    $data['shipping'][house_number] = $customer->get_meta('shipping_house_number');

    return $data;
}

// Display reordered editable custom fields on admin single User pages
add_filter( 'woocommerce_customer_meta_fields', 'house_number_customer_meta_fields', 10, 1 );
function house_number_customer_meta_fields( $fields ) {
    $fields['shipping']['fields']['shipping_house_number'] = array(
        'label'       => __( 'House Number', 'woocommerce' ),
    );

    return $fields;
}



// Adding custom placeholder to woocommerce formatted address only on Backend
add_filter( 'woocommerce_localisation_address_formats', 'admin_localisation_address_formats', 50, 1 );
function admin_localisation_address_formats( $address_formats ){
    // Only in backend (Admin)
    if( is_admin() || ! is_wc_endpoint_url() ) {
        foreach( $address_formats as $country_code => $address_format ) {
            $address_formats[$country_code] .= "\n{house_number}";
        }
    }
    return $address_formats;
}

// Custom placeholder replacement to woocommerce formatted address
add_filter( 'woocommerce_formatted_address_replacements', 'custom_formatted_address_replacements', 10, 2 );
function custom_formatted_address_replacements( $replacements, $args  ) {
    $replacements['{house_number}'] = ! empty($args['house_number']) ? $args['house_number'] : '';

    return $replacements;
}

// Add the shipping house number value to be displayed on email notifications under shipping address
add_filter( 'woocommerce_order_formatted_shipping_address', 'add_shipping_house_number_to_formatted_shipping_address', 100, 2 );
function add_shipping_house_number_to_formatted_shipping_address( $shipping_address, $order ) {
    global $pagenow, $post_type;

    // Not on admin order edit pages (as it's already displayed).
    if( ! ( $pagenow === 'post.php' && $post_type === 'shop_order' && isset($_GET['action']) && $_GET['action'] === 'edit' ) ) {
        // Include shipping phone on formatted shipping address
        $shipping_address['house_number'] = $order->get_meta('_shipping_house_number');
    }
    return $shipping_address;
}

标签: phpwordpresswoocommerce

解决方案


对于感谢页面和我的帐户查看顺序,您可以使用 WCwoocommerce_order_get_formatted_shipping_address过滤器挂钩。

function add_woocommerce_order_get_formatted_shipping_address( $address, $empty_content, $raw_address, $order ){
    $address .= '<br/> this is custom text';
    return $address;
}
add_filter( 'woocommerce_order_get_formatted_shipping_address', 'add_woocommerce_order_get_formatted_shipping_address', 10, 4 );

谢谢页面

在此处输入图像描述

我的帐户查看订单。

在此处输入图像描述

我的帐户编辑地址

你需要覆盖。woocommerce\templates\myaccount\my-address.php 到您的主题或插件。


推荐阅读