#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 в дочерней теме. Поля находятся в разделе комментариев / отзывов, и я не уверен, совпадают ли они.