Изменить порядок полей адреса для выставления счетов администратора в заказах WooCommerce - PullRequest
1 голос
/ 11 февраля 2020

У меня проблема с порядком woocommerce в админе. Я хочу, чтобы billing_address_2 показывался в конце страницы как пример ниже.

Может кто-нибудь, пожалуйста, помогите мне.

enter image description here

1 Ответ

0 голосов
/ 11 февраля 2020

Основной файл, который отвечает за отображение этих полей, находится в плагине WooCommerce в: includes/admin/meta-boxes/class-wc-meta-box-order-data.php.

Единственный доступный и эффективный хук: woocommerce_admin_shipping_fields .

Но вы сможете изменить только порядок полей для выставления счетов администратора, используя что-то вроде:

add_filter( 'woocommerce_admin_billing_fields' , 'change_order_admin_billing_fields' );
function change_order_admin_billing_fields( $fields ) {
    global $the_order;

    $address_2 = $fields['address_2'];

    unset($fields['address_2']);

    $fields['address_2'] = $address_2;

    return $fields;
}

, что даст вам что-то вроде:

enter image description here

Таким образом, как вы можете видеть , вы не получите поле выставления счета address_2, которое будет отображаться после идентификатора транзакции , как вы sh, но только под полем выставления счета phone.


Добавление - отображение поля billing_address_2 перед полем billing_country :

add_filter( 'woocommerce_admin_billing_fields' , 'change_order_admin_billing_fields' );
function change_order_admin_billing_fields( $fields ) {
    global $the_order;

    $sorted_fields = [];
    $address_2 = $fields['address_2'];
    unset($fields['address_2']);

    foreach ( $fields as $key => $values ) {
        if( $key === 'country' ) {
            $sorted_fields['address_2'] = $address_2;
        }
        $sorted_fields[$key] = $values;
    }

    return $sorted_fields;
}
...