• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Нужно создать кастомное поле для администратора

andrej

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

Поле должно работать как для обычных, так и для вариативных товаров...

Видел решения на основе хуков и плагинов, везде только для обычных товаров. В вариативных товарах примечание не появляется... а хотелось...

Если имеется какое либо наработанное решение, поделитесь

Всем добра!
 

ADv

Гуру
Местный
Задача - создать дополнительное поле для примечаний при добавлении товара.
поле должно быть видно только администратору, и не появляться на сайте в карточке товара.

Поле должно работать как для обычных, так и для вариативных товаров...

Видел решения на основе хуков и плагинов, везде только для обычных товаров. В вариативных товарах примечание не появляется... а хотелось...

Если имеется какое либо наработанное решение, поделитесь

Всем добра!
ACF
 

andrej

Форумчанин
Сделал кодом, по примеру как на https://wpruse.ru/woocommerce/custom-fields-in-products/
Все работает :) Всем спасибо!


Код:
// по ссылке пример - разные поля, чекбоксы https://wpruse.ru/woocommerce/custom-fields-in-products/

//  Первая часть - создаем поле
add_action( 'woocommerce_product_options_general_product_data', 'notice_for_admin_fields' );
function notice_for_admin_fields() {
   global $product, $post;
   echo '<div class="options_group" >';// Группировка полей
   // Тектовая область
   echo '<BR> <strong style="margin-left: 10px;display: table;font-size: 12px;line-height: 14px;color: #555;">Примечание для внутреннего пользования. Содержимое этого поля не появится на сайте<BR> Здесь можно добавлять ссылки на магазин товара, или другие примечания к товару</strong>';
   woocommerce_wp_textarea_input( array(
      'id'            => '_textarea', // Идентификатор поля
      'label'         => 'Примечание: ', // Заголовок поля
      'placeholder'   => 'Ввод текста', // Надпись внутри поля
      'class'         => 'textarea-field', // Произвольный класс поля
      'style'         => 'width-: 70%; background-:red; height: inherit;', // Произвольные стили для поля
      'wrapper_class' => 'wrap-textarea', // Класс обертки поля
      'desc_tip'      => 'true', // Включение подсказки
      'description'   => 'Скрытое примечание к товару',// Описение поля
      'name'          => 'textarea-field', // Имя поля
      'rows'          => '5', //Высота поля в строках текста.
      'col'           => '18', //Ширина поля в символах.
   ) );
 
 echo '</div>';
}
//  Вторая часть - сохраняем поле
add_action( 'woocommerce_process_product_meta', 'notice_for_admin_fields_save', 10 );
function notice_for_admin_fields_save( $post_id ) {

   // Сохранение области тектса, если поле НЕ пустое, делаем  update, если поле пустое, очищаем
   $woocommerce_textarea = $_POST['textarea-field'];
   if ( ! empty( $woocommerce_textarea ) ) { update_post_meta( $post_id, '_textarea', esc_html( $woocommerce_textarea ) );} else { delete_post_meta( $post_id, '_textarea');}
}
//  третья часть - для случая, если поле нужно вывести на фронтенд карточки товара, но в данном случае такая задача не стоит
 
  • Like
Реакции: ADv
Сверху Снизу