Làm cách nào để hiển thị trường tùy chỉnh trong đơn đặt hàng thương mại điện tử trong bảng quản trị?


12

hiện tại tôi thêm một trường thanh toán tùy chỉnh trong thương mại điện tử bằng cách

function custom_override_checkout_fields( $fields ) {
     $fields['billing']['billing_phone_new'] = array(
        'label'     => __('Phone 2', 'woocommerce'),
    'placeholder'  => _x('Phone 2', 'placeholder', 'woocommerce'),
    'required'  => false,
    'class'     => array('form-row-wide'),
    'clear'     => true
     );

     return $fields;
}

add_filter('woocommerce_checkout_fields','custom_override_checkout_fields');

tôi cần chỉnh sửa giá trị trường này ở phía quản trị viên. Hiện tại tôi có thể chỉnh sửa tất cả các giá trị khác trong địa chỉ thanh toán nhưng giá trị này không xuất hiện trong phần quản trị. Tôi chỉ sử dụng đoạn mã sau để xem giá trị trong phần quản trị.

function order_phone_backend($order){
    echo "<p><strong>Billing phone 2:</strong> " . get_post_meta( $order->id, '_billing_phone_new', true ) . "</p><br>";
} 

add_action( 'woocommerce_admin_order_data_after_billing_address', 'order_phone_backend', 10, 1 );

Tôi đọc tài liệu https://docs.wootheme.com/document/tutorial-customising-checkout-fields-USE-ilities-and-filters/ . Nhưng tất cả mọi thứ trong tài liệu này đều hoạt động chính xác, mong đợi bill_phone / Phone được ghi chú trong trường Tùy chỉnh. Tôi kiểm tra tùy chọn màn hình nhưng tôi đã đánh dấu vào trường tùy chỉnh. Trường tùy chỉnh khác và giá trị của nó có thể nhìn thấy và có thể chỉnh sửa.

Làm thế nào tôi có thể chỉnh sửa giá trị này trong back end. Hãy giúp tôi .


Khối mã đầu tiên trong câu hỏi của bạn, sửa đổi trường 'Điện thoại không' mặc định. Nó không thêm bất kỳ lĩnh vực mới vào hình thức thanh toán. Các trường thanh toán sẽ không có sẵn trong "trường tùy chỉnh", vì vậy vui lòng không tìm kiếm ở đó. Nếu bạn muốn chỉnh sửa bất kỳ trường nào từ địa chỉ thanh toán hoặc địa chỉ giao hàng, hãy đi đến phụ trợ và nhấp vào bất kỳ đơn hàng nào trong danh sách đơn hàng. Sau đó, bạn sẽ thấy một biểu tượng chỉnh sửa nhỏ bên cạnh các tiêu đề 'Chi tiết thanh toán' và 'Chi tiết vận chuyển'. Nhấp vào đó sẽ cho phép bạn chỉnh sửa các chi tiết. Tôi hi vọng cái này giúp được.
Prasad Nevase

Vui lòng kiểm tra mã của tôi ngay bây giờ
Ron

Câu trả lời:


22

Mã bạn đã cung cấp không đầy đủ. Không chắc chắn nếu đó là mã duy nhất bạn đang sử dụng để đạt được những gì bạn muốn. Vì vậy, ngoài khối mã đầu tiên mà bạn đã cung cấp, dưới đây tôi đang thêm tất cả phần còn lại của mã được yêu cầu để hiển thị trường mới trên phụ trợ trong hộp 'Chi tiết đặt hàng' và có thể chỉnh sửa thông qua các trường tùy chỉnh. Xin lưu ý, trong khối mã thứ hai của bạn, bạn đã đặt tên khóa trường là _billing_new_phone. Bất kỳ tên khóa trường tùy chỉnh nào bắt đầu bằng _ (gạch dưới) là trường tùy chỉnh ẩn & sẽ không hiển thị trên phụ trợ trong "Trường tùy chỉnh".

/**
 * Process the checkout
 */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['billing_phone_new'] )
        wc_add_notice( __( 'Phone 2 is compulsory. Please enter a value' ), 'error' );
}


/**
 * Update the order meta with field value
 */
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_phone_new'] ) ) {
        update_post_meta( $order_id, 'billing_phone_new', sanitize_text_field( $_POST['billing_phone_new'] ) );
    }
}


/**
 * Display field value on the order edit page
 */
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>'.__('Phone 2').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_phone_new', true ) . '</p>';
}

WooC Commerce không làm cho trường thanh toán mới có thể chỉnh sửa trong hộp 'Chi tiết đặt hàng' tiêu chuẩn của nó. Nó sẽ có sẵn dưới dạng chế độ 'chỉ xem' trong hộp đó nhưng bạn có thể chỉnh sửa tương tự thông qua khối trường tùy chỉnh tiêu chuẩn của WordPress. Xem ảnh chụp màn hình bên dưới.

nhập mô tả hình ảnh ở đây


"" Bất kỳ tên khóa trường tùy chỉnh nào bắt đầu bằng _ (gạch dưới) là trường tùy chỉnh ẩn & sẽ không hiển thị trên phụ trợ trong "Trường tùy chỉnh". "" Bạn lấy thông tin này từ đâu?
Ron

2
Trên codex WordPress. Bạn có thể biết thêm thông tin ở đây
Prasad Nevase

Xin hãy giúp giải quyết câu hỏi của bạn tôi stackoverflow.com/questions/49505056/ Khăn
Ron

trong trường hợp của tôi, tôi đã nhận được kết quả bằng cách sử dụng get_post_meta ($ order-> get_id (), '_billing_phone_new', true). Tôi đã phải đặt dấu gạch dưới trước tên biến trong hàm get_post_meta.
Dashrath

1

Đây là giải pháp: Không được phép truy cập trực tiếp dữ liệu sản phẩm, ví dụ:

$product->id

Phương pháp đúng trong tương lai là:

$product->get_id()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.