Дополнителное поле в карточку woocommerce /

Добавляем простое поле. для описания кратких характеристик товара

17 / 02 / 2019 409 wordpress Aвтор: Фрилансер

Дополнителное поле в карточку woocommerce

Woocommerce хороший плагин, но иногда нужно его доработать под свои нужды. 

Передо мной стояла задача добавить поле, куда будет добавляться краткие характеристики товара. Потом их нужно отобразить в товаре на странице категорий. 

И так для моих целей нужно создать поле с редактором wp  для удобства.

Хук и функция для добавления поля 

add_action( 'woocommerce_product_options_general_product_data', 'art_woo_add_custom_fields' );
function art_woo_add_custom_fields() {
  global $product, $post;
  ?>
  <div class="options_group">
    <h2><strong>Описание в категории товаров</strong></h2>
    <?php
    wp_editor(get_post_meta( $post->ID, '_custom_desc', true ), 'custom_desc', array(
      'wpautop'       => 1,
      'media_buttons' => 1,
      'textarea_name' => 'custom_desc',
      'textarea_rows' => 5,
      'tabindex'      => null,
      'editor_css'    => '<style>.quicktags-toolbar, .wp-editor-tools, .wp-editor-wrap, .wp-switch-editor {padding: 5px 10px;}</style>',
      'editor_class'  => 'form-field',
      'teeny'         => 0,
      'dfw'           => 0,
      'tinymce'       => 1,
      'quicktags'     => 1,
      'drag_drop_upload' => false
    ) );
    
    ?>
  </div>
  <?php
}

Дальше сохраняем их

add_action( 'woocommerce_process_product_meta', 'art_woo_custom_fields_save', 10 );
function art_woo_custom_fields_save( $post_id ) {
  // Сохранение области тектса
  $woocommerce_textarea = $_POST['custom_desc'];
  if ( ! empty( $woocommerce_textarea ) ) {
    update_post_meta( $post_id, '_custom_desc', $woocommerce_textarea );
  }

}

Вот что получилось

дополнительное поле woocommerce

После проверки что все работает и все сохраняется. Выведем содержимое в карточке.

//вывод после заголовка в карточке товара на странице категорий
add_action( 'woocommerce_after_shop_loop_item_title', 'artabr_add_field_after_price', 11 );
function artabr_add_field_after_price() {
   global $post, $product;
   $text_field     = get_post_meta( $post->ID, '_custom_desc', true );   
   if ( $text_field ) {
      ?>
      <div class="_custom_desc">         
         <?php echo $text_field; ?>
      </div>
   <?php }
   
}

В итоге все получилось так.

woocommerce_after_shop_loop_item_title

Если нужно больше подобных примеров, пишите в коментарии.

3 случайных Поста

Card image cap
Contact form 7- редирект на страницы при разных значения полей-
Card image cap
Набор регулярок для поиска и валидации
Card image cap
Отправка emoji в телеграм через API

коммент.

avatar

Сергей

- 24 апреля 2019, 11:28
Нужно!
А внутри страницы товара, они будут отображаться?
avatar

Admin

- 24 апреля 2019, 11:37
Если выведете то будут. например в информации о товаре
add_action( 'woocommerce_single_product_summary', 'artabr_add_field_after_price', 65 );
function artabr_add_field_after_price() {
   global $post, $product;
   $text_field     = get_post_meta( $post->ID, '_custom_desc', true );   
   if ( $text_field ) {
      ?>
      <div class="_custom_desc">         
         <?php echo $text_field; ?>
      </div>
   <?php }
Типо так

© SiteBlog designer