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

Решено Описание категорий Woocommerce вниз под товарами

Karudo

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

Karudo

Новичок
Нашел сейчас бесплатное решение проблемы, и плагин не нужно покупать ))

Все просто, добавляем в конец файла functions.php код и наслаждаемся результатом!

PHP:
add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 );

function wpm_taxonomy_edit_meta_field($term) {
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" );
  $content = $term_meta['custom_term_meta'] ? wp_kses_post( $term_meta['custom_term_meta'] ) : '';
  $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' );
  ?>
  <tr class="form-field">
  <th scope="row" valign="top"><label for="term_meta[custom_term_meta]">Второе описание или банеры внизу для категории</label></th>
    <td>
      <?php wp_editor( $content, 'product_cat_details', $settings ); ?>
     
    </td>
  </tr>
<?php
}

add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 ); 
add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );

function save_taxonomy_custom_meta( $term_id ) {
  if ( isset( $_POST['term_meta'] ) ) {
    $t_id = $term_id;
    $term_meta = get_option( "taxonomy_$t_id" );
    $cat_keys = array_keys( $_POST['term_meta'] );
    foreach ( $cat_keys as $key ) {
      if ( isset ( $_POST['term_meta'][$key] ) ) {
        $term_meta[$key] = wp_kses_post( stripslashes($_POST['term_meta'][$key]) );
      }
    }
   
    update_option( "taxonomy_$t_id", $term_meta );
  }
}

add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' );

function wpm_product_cat_archive_add_meta() {
  $t_id = get_queried_object()->term_id;
  $term_meta = get_option( "taxonomy_$t_id" );
  $term_meta_content = $term_meta['custom_term_meta'];
  if ( $term_meta_content != '' ) {
    echo '<div class="woo-sc-box normal rounded full">';
      echo apply_filters( 'the_content', $term_meta_content );
    echo '</div>';
  }
}
 
Нашел сейчас бесплатное решение проблемы, и плагин не нужно покупать ))

Все просто, добавляем в конец файла functions.php код и наслаждаемся результатом!

PHP:
add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 );

function wpm_taxonomy_edit_meta_field($term) {
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" );
  $content = $term_meta['custom_term_meta'] ? wp_kses_post( $term_meta['custom_term_meta'] ) : '';
  $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' );
  ?>
  <tr class="form-field">
  <th scope="row" valign="top"><label for="term_meta[custom_term_meta]">Второе описание или банеры внизу для категории</label></th>
    <td>
      <?php wp_editor( $content, 'product_cat_details', $settings ); ?>
    
    </td>
  </tr>
<?php
}

add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 );
add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );

function save_taxonomy_custom_meta( $term_id ) {
  if ( isset( $_POST['term_meta'] ) ) {
    $t_id = $term_id;
    $term_meta = get_option( "taxonomy_$t_id" );
    $cat_keys = array_keys( $_POST['term_meta'] );
    foreach ( $cat_keys as $key ) {
      if ( isset ( $_POST['term_meta'][$key] ) ) {
        $term_meta[$key] = wp_kses_post( stripslashes($_POST['term_meta'][$key]) );
      }
    }
  
    update_option( "taxonomy_$t_id", $term_meta );
  }
}

add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' );

function wpm_product_cat_archive_add_meta() {
  $t_id = get_queried_object()->term_id;
  $term_meta = get_option( "taxonomy_$t_id" );
  $term_meta_content = $term_meta['custom_term_meta'];
  if ( $term_meta_content != '' ) {
    echo '<div class="woo-sc-box normal rounded full">';
      echo apply_filters( 'the_content', $term_meta_content );
    echo '</div>';
  }
}
 

Oksana

Новичок
Нашел сейчас бесплатное решение проблемы, и плагин не нужно покупать ))

Все просто, добавляем в конец файла functions.php код и наслаждаемся результатом!

PHP:
add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 );

function wpm_taxonomy_edit_meta_field($term) {
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" );
  $content = $term_meta['custom_term_meta'] ? wp_kses_post( $term_meta['custom_term_meta'] ) : '';
  $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' );
  ?>
  <tr class="form-field">
  <th scope="row" valign="top"><label for="term_meta[custom_term_meta]">Второе описание или банеры внизу для категории</label></th>
    <td>
      <?php wp_editor( $content, 'product_cat_details', $settings ); ?>
    
    </td>
  </tr>
<?php
}

add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 );
add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );

function save_taxonomy_custom_meta( $term_id ) {
  if ( isset( $_POST['term_meta'] ) ) {
    $t_id = $term_id;
    $term_meta = get_option( "taxonomy_$t_id" );
    $cat_keys = array_keys( $_POST['term_meta'] );
    foreach ( $cat_keys as $key ) {
      if ( isset ( $_POST['term_meta'][$key] ) ) {
        $term_meta[$key] = wp_kses_post( stripslashes($_POST['term_meta'][$key]) );
      }
    }
  
    update_option( "taxonomy_$t_id", $term_meta );
  }
}

add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' );

function wpm_product_cat_archive_add_meta() {
  $t_id = get_queried_object()->term_id;
  $term_meta = get_option( "taxonomy_$t_id" );
  $term_meta_content = $term_meta['custom_term_meta'];
  if ( $term_meta_content != '' ) {
    echo '<div class="woo-sc-box normal rounded full">';
      echo apply_filters( 'the_content', $term_meta_content );
    echo '</div>';
  }
}
Огромное, человеческое спасибо, проблема решена
 

jamaster

Форумчанин
а как можно категориям добавить общий фон? заранее благодарю!
 

that

Новичок
Нашел сейчас бесплатное решение проблемы, и плагин не нужно покупать ))

Все просто, добавляем в конец файла functions.php код и наслаждаемся результатом!

PHP:
add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 );

function wpm_taxonomy_edit_meta_field($term) {
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" );
  $content = $term_meta['custom_term_meta'] ? wp_kses_post( $term_meta['custom_term_meta'] ) : '';
  $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' );
  ?>
  <tr class="form-field">
  <th scope="row" valign="top"><label for="term_meta[custom_term_meta]">Второе описание или банеры внизу для категории</label></th>
    <td>
      <?php wp_editor( $content, 'product_cat_details', $settings ); ?>
    
    </td>
  </tr>
<?php
}

add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 );
add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );

function save_taxonomy_custom_meta( $term_id ) {
  if ( isset( $_POST['term_meta'] ) ) {
    $t_id = $term_id;
    $term_meta = get_option( "taxonomy_$t_id" );
    $cat_keys = array_keys( $_POST['term_meta'] );
    foreach ( $cat_keys as $key ) {
      if ( isset ( $_POST['term_meta'][$key] ) ) {
        $term_meta[$key] = wp_kses_post( stripslashes($_POST['term_meta'][$key]) );
      }
    }
  
    update_option( "taxonomy_$t_id", $term_meta );
  }
}

add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' );

function wpm_product_cat_archive_add_meta() {
  $t_id = get_queried_object()->term_id;
  $term_meta = get_option( "taxonomy_$t_id" );
  $term_meta_content = $term_meta['custom_term_meta'];
  if ( $term_meta_content != '' ) {
    echo '<div class="woo-sc-box normal rounded full">';
      echo apply_filters( 'the_content', $term_meta_content );
    echo '</div>';
  }
}

Всё отлично, только как опустить описание под пагинацию?
 

Stork.71

Гуру
Местный
Судя по коду, расположение этого блока задано в строке add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' );
можно менять after_shop_loop, подбирая правильное месторасположение, а может надо просто добавлять цифры - порядок исполнения (10,20,30...) например
add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta', 30 );
пробуйте
 
  • Like
Реакции: qwer

Oksana

Новичок
Может от шаблона зависит, у меня под пагинацией получилось, но отображается на всех страницах (чтоб не было частичных дублей, страницы пагинации закрыты в роботсе)
шаблон AccessPress Store
 

jamaster

Форумчанин
а как добавить еще одно дополнительное поле для описание под категориями товаров но перед товарами?
 

Stork.71

Гуру
Местный
Наверное, продублировать этот кусок кода, поменяв названия функций, и подменив woocommerce_after_shop_loop на woocommerce_before_shop_loop
 

jamaster

Форумчанин
или можно для примера кусок куда ? а то я не особо знаю в php )
 

petyp

Форумчанин
Люди это отличный ХАК, но в нем есть большой минус! Он отображается на всех страницах категории((( а как сделать так что бы он выводился только на первой странице описание а на остальных не выводился??
 

Jacky-boom

Форумчанин
Люди это отличный ХАК, но в нем есть большой минус! Он отображается на всех страницах категории((( а как сделать так что бы он выводился только на первой странице описание а на остальных не выводился??
Просто, через проверку <?php !is_paged(); ?>
А вообще почему Вас беспокоит, что на остальных страницах есть описание? Из-за СЕО? Ну так закройте страницы пагинации мета-тегом noindex, nofollow и всё
 
Сверху Снизу