Сделать раскрывающийся список стран оформления заказа в Woocommerce - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу, чтобы раскрывающийся список стран на woocommerce был доступен только для чтения.Country Image

Я уже установил для страны по умолчанию значение "Австралия", но хочу, чтобы они были доступны только для чтения.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Ответ Кашало правильный ... Вы также можете использовать один из следующих нескольких способов:

1) Только для страны оплаты заказа:

add_filter('woocommerce_checkout_fields', 'readdonly_billing_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    // Make billing country field read only
    $fields['billing']['billing_country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

2) Только для страны оплаты и оплаты в моем аккаунте:

add_filter('woocommerce_billing_fields', 'readdonly_billing_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    // Make billing country field read only
    $fields['billing_country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

3 Для страны оформления заказа и доставки:

add_filter('woocommerce_checkout_fields', 'readdonly_billing_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    WC()->customer->set_shipping_country('AU');
    // Make billing and shipping country field read only
    $fields['billing']['billing_country']['custom_attributes'] = array( 'disabled' => 'disabled' );
    $fields['shipping']['shipping_country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

4) Для страны оплаты и доставки в Моем аккаунте:

add_filter('woocommerce_default_address_fields', 'readdonly_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    WC()->customer->set_shipping_country('AU');
    // Make country field read only
    $fields['country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}
0 голосов
/ 11 сентября 2018

вы можете использовать woocommerce_form_field_args, чтобы добавить отключенный атрибут в поле выбора quntry.

добавьте следующий код к вашему functions.php, и вы получите желаемый результат.

add_action('woocommerce_form_field_args', 'disable_country_dropdown', 10, 3);


function disable_country_dropdown($args, $key, $value)
{
    if ($key == 'billing_country') {
        $args['custom_attributes'] = [
            'disabled' => 'disabled',
        ];
    }
    return $args;
}

проблема, когда мы нажали на отключение выбора, значение параметра не передается, когда вы нажимаете кнопку «разместить заказ», и для решения этой проблемы мы можем добавить скрытое поле с желаемым значением следующим образом:

add_action('woocommerce_after_order_notes', 'billing_country_hidden_field');

function billing_country_hidden_field($checkout)
{

    echo '<input type="hidden" class="input-hidden" name="billing_country"  value="PL">';

}

просто замените value="PL" на значение кода вашей страны, и все будет работать как положено.

Выход:

enter image description here

Код протестирован с темой StorrFront.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...