Редактирование полей обзора комментариев в WooCommerce Product Review Pro

#php #wordpress #woocommerce

#php #wordpress #woocommerce

Вопрос:

Я использую WooCommerce Product Review Pro на своем веб-сайте и хотел бы изменить поля имени и электронной почты.

Смотрите вложение:

введите описание изображения здесь


Кто-нибудь может сказать мне, как изменить структуру (сделать поля друг за другом) и добавить заполнитель.

Вот как поля выглядят во внешнем интерфейсе:

 <p class="form-row validate-required" id="review_author_field" data-priority="" style="display: block;">
    <label for="review_author" class="">Nameamp;nbsp;<abbr class="required" title="erforderlich">*</abbr></label>
    <span class="woocommerce-input-wrapper">
        <input type="text" class="input-text " name="author" id="review_author" placeholder="" value="">
    </span>
</p>
<p class="form-row validate-required" id="review_email_field" data-priority="" style="display: block;">
    <label for="review_email" class="">E-Mailamp;nbsp;<abbr class="required" title="erforderlich">*</abbr></label>
    <span class="woocommerce-input-wrapper">
        <input type="text" class="input-text " name="email" id="review_email" placeholder="" value="">
    </span>
</p>
  

ОБНОВЛЕНИЕ: этот код взят из файла шаблона плагина

 <?php if ( ! is_user_logged_in() amp;amp; get_option( 'require_name_email' ) amp;amp; ! get_option( 'comment_registration' ) ) : ?>
    <?php if ( ! isset( $fields['author'] ) ) : ?> 
    <?php $fields['author'] = array( 'label' => __( 'Name', 'woocommerce-product-reviews-pro' ), 'required' => true ); ?> 
    <?php endif; ?> 
    
    <?php if ( ! isset( $fields['email'] ) ) : ?>
    <?php $fields['email'] = array( 'label' => __( 'E-Mail', 'woocommerce-product-reviews-pro' ), 'required' => true ); ?>
    <?php endif; ?>
<?php endif; ?>
  

Комментарии:

1. Поскольку вы будете использовать дополнительный плагин для добавления этих полей в обзоры продуктов, это зависит от того, как построен этот плагин. Например, эти поля можно добавить с помощью кода или с помощью файла шаблона. Поэтому людям, у которых нет этого плагина, будет сложно ответить на ваш вопрос. Поэтому я считаю, что лучше разрешить ваш вопрос разработчикам самого плагина.

2. Я понимаю, но я испытываю свою удачу, потому что разработчик плагина не позволил связаться с ним. Кажется, что плагин использует поля WordPress по умолчанию, и я надеюсь, что кто-нибудь может помочь мне получить эти поля.

3. Что я могу порекомендовать в этом случае, так это поиск в файлах плагинов (через текстовый редактор / редактор кода) по идентификаторам полей или классам. Таким образом, вы можете узнать, откуда генерируется код внутри плагина, и (возможно) дополнительное объяснение: с помощью файла шаблона, как вы можете его перезаписать или что есть хук, доступный для перезаписи выходных данных полей.

4. В общем, вы можете найти следующее объяснение в верхней части файлов шаблонов Этот шаблон можно переопределить, скопировав его в yourtheme/ … Я не знаю, относится ли это к этому файлу шаблона? если это так, вы можете выполнить следующие шаги и внести любые необходимые изменения в копию файла шаблона

5. К сожалению, такой информации нет.

Ответ №1:

Вы должны подключиться к полям с помощью:

 add_filter( 'woocommerce_checkout_fields', 'change_checkout_fields_order' );
  

Затем измените приоритет для поля, которое вы хотите изменить:

 function change_checkout_fields_order( $fields ) {
    $fields['billing']['author']['priority'] = 4;
 
    return $fields ;
}
  

Обратите внимание, что выбранный здесь ключ может отличаться от вашей ситуации. Если вы не уверены в том, какой ключ вам нужен, вы всегда можете сначала print_r() указать, что находится внутри $fields .

Комментарии:

1. Спасибо вам! Знаете ли вы, как я могу изменить классы полей, удалить метку или добавить заполнитель?

2. Да, вы можете просто использовать class вместо priority . Вероятно, вам следует использовать следующее : $fields['billing']['author']['class'] .= 'extra-class'; . Я не уверен, является ли это массивом из нескольких классов или это одна строка. Если это массив, используйте: $fields['billing']['author']['class'][] = 'extra-class'; И то же самое, вероятно, относится к placeholder .

3. Привет, спасибо за ваш ответ. Я только что добавил это: add_filter( ‘woocommerce_checkout_fields’, ‘change_checkout_fields_order’); функция change_checkout_fields_order( $fields ) { $fields[‘биллинг’][‘автор’][‘класс’] [] = ‘экстра-класс’; $fields[‘биллинг’] [‘автор’][‘заполнитель’][] = ‘Name’; возвращает $fields; } и это не сработало :/

4. Где вы это добавили? И вы уверены, что автор находится в полях выставления счетов? Вы напечатали $fields , как я предлагал в первоначальном ответе?

5. Я добавил его в functions.php в дочерней теме. Поля находятся в разделе комментариев / отзывов, и я не уверен, совпадают ли они.