Сделайте Мои учетные записи доступными только для редактирования в Woocommerce. - PullRequest
0 голосов
/ 29 июня 2018

Мне нужно сделать woocommerce e-mail / edit-account / page email или фамилию или другое поле. Одно поле или два поля, ReadOnly

Мое решение - отредактировать файл form-edit-account.php в папке plugins / woocommerce / templates / myaccount и отредактировать файл form-edit-account.php и добавить readonly в конец тегов и работать правильно Например:

<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="account_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--email input-text" name="account_email" id="account_email" autocomplete="email" value="<?php echo esc_attr( $user->user_email ); ?>" readonly />
</p>

но мне нужно сделать это изменение только из файла function.php. Это возможно? ты можешь вести меня? мне нужен код для файла functions.php спасибо всем

1 Ответ

0 голосов
/ 29 июня 2018

Вместо этого вы также можете использовать jQuery (здесь для поля "billing_mobile_phone"):

add_action( 'wp_footer' , 'make_phone_field_readonly' );
function make_phone_field_readonly(){
    // Only for account fields
    if( is_account_page() ): ?>
    <script type='text/javascript'>
        jQuery(function($){
            $('form.edit-account input#billing_mobile_phone').prop('readonly', true );
        });
    </script>
    <?php endif;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.


Или, как и в вашем предпоследнем вопросе, вы будете использовать подключенную функцию, добавляя атрибут readonly в дополнительные поля:

// Display the mobile phone field
// add_action( 'woocommerce_edit_account_form_start', 'add_billing_mobile_phone_to_edit_account_form' ); // At start
add_action( 'woocommerce_edit_account_form', 'add_billing_mobile_phone_to_edit_account_form' ); // After existing fields
function add_billing_mobile_phone_to_edit_account_form() {
    $user = wp_get_current_user();
    ?>
     <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="billing_mobile_phone"><?php _e( 'Mobile phone', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" readonly />
    </p>
    <?php
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.


Итак, у вас есть 3 варианта:

  • Добавить атрибут readonly с помощью jQuery (может быть, лучше)
  • Переопределение шаблона через тему (добавление атрибута readonly)
  • Добавление настраиваемых полей учетной записи с атрибутом только для чтения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...