Jak wyświetlić niestandardowe pole w zamówieniach woocommerce w panelu administracyjnym?

13

obecnie dodaję niestandardowe pole rozliczeniowe w woocommerce przez

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

muszę edytować tę wartość pola po stronie administratora. Obecnie mogę edytować wszystkie inne wartości w adresie rozliczeniowym, ale ta wartość nie pojawia się w sekcji administratora. Używam następującego kodu tylko w celu wyświetlenia wartości w sekcji admin.

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

Przeczytałem dokumentację https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ . Ale wszystko w tym dokumencie działa poprawnie oczekuj billing_phone / Phone jest uwaga patrz pole Custom. Zaznaczam opcję ekranu, ale zaznaczyłem już pole niestandardowe. Inne niestandardowe pole i jego wartość są widoczne i można je edytować.

Jak mogę edytować tę wartość w zapleczu. Proszę pomóż .

Ron
źródło
Pierwszy blok kodu w pytaniu modyfikuje domyślne pole „Numer telefonu”. Nie dodaje żadnego nowego pola do formularza zamówienia. Pola kasy nie będą dostępne w „niestandardowych polach”, więc nie szukaj ich tam. Jeśli chcesz edytować dowolne pole z adresu rozliczeniowego lub wysyłkowego, przejdź do zaplecza i kliknij dowolne zamówienie na liście zamówień. Następnie zobaczysz małą ikonę edycji oprócz nagłówków „Szczegóły płatności” i „Szczegóły wysyłki”. Kliknięcie tego przycisku pozwoli Ci edytować te szczegóły. Mam nadzieję, że to pomoże.
Prasad Nevase
Proszę sprawdzić mój kod teraz
Ron

Odpowiedzi:

22

Podany kod jest niekompletny. Nie jestem pewien, czy jest to jedyny kod, którego używasz do osiągnięcia tego, co chcesz. Tak więc oprócz pierwszego bloku kodu, który podałeś, poniżej dodam całą resztę kodu, który jest wymagany, aby pokazać nowe pole na zapleczu w polu „Szczegóły zamówienia” i umożliwić edycję za pomocą pól niestandardowych. Uwaga: w drugim bloku kodu nazwałeś klucz pola jako _billing_new_phone. Każda nazwa klucza pola niestandardowego rozpoczynająca się od _ (podkreślenie) jest ukrytym polem niestandardowym i nie będzie wyświetlana na zapleczu w obszarze „Pola niestandardowe”.

/**
 * 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>';
}

WooCommerce nie umożliwia edycji nowego pola kasy w jego standardowym polu „Szczegóły zamówienia”. Będzie dostępny w trybie „tylko widok” w tym polu, ale możesz go edytować za pomocą standardowego bloku pól niestandardowych WordPress. Zobacz zrzut ekranu poniżej.

wprowadź opis zdjęcia tutaj

Prasad Nevase
źródło
„” Każda nazwa klucza pola niestandardowego, która zaczyna się od _ (podkreślenie), jest ukrytym polem niestandardowym i nie będzie wyświetlana na zapleczu w obszarze „Pola niestandardowe”. „” Skąd masz te informacje?
Ron
2
Na kodeksie WordPress. Możesz uzyskać więcej informacji tutaj
Prasad Nevase
Proszę helpt rozwiązać mój przyjaciel zapytania stackoverflow.com/questions/49505056/...
Ron
w moim przypadku uzyskałem wyniki za pomocą get_post_meta ($ order-> get_id (), '_billing_phone_new', true). Musiałem umieścić znak podkreślenia przed nazwą zmiennej w funkcji get_post_meta.
Dashrath
1

Oto rozwiązanie: Bezpośredni dostęp do danych produktu jest niedozwolony, np

$product->id

Właściwą metodą na przyszłość jest:

$product->get_id()
Gaël
źródło