WP-CITY.RU

Авторские шаблоны WordPress

Недорогой, функциональный сайт или Интернет-магазин
это реально!


Заказать интернет-магазин сейчас

Отделяем категории и подкатегории от товаров в woocomerce

Всем доброго вечера, давно хотел написать статью как можно разделить категории от товаров в woocomerce.
Изначально по умолчанию они выводятся совместно с товарами в одной обертке, редактированием файлов самого движка очень проблематично их разделить, а если возникнет идею выводить категории например каруселью, тогда вообще караул)))

Отделяем категории от товаров в woocomerce

Так выглядят категории изначально

Сегодня мы пойдем немного другим путем и немного поработаем над самим шаблоном использую для этого всего один фаил function.php, он должен быть в папке с вашим шаблоном, если нет, тогда создайте его.
Итак приступим, открываем на фаил function.php и вставляем туда код

function monomeath_product_cats_css() {

/* register the stylesheet */
wp_register_style( 'monomeath_product_cats_css', plugins_url( 'css/style.css', __FILE__ ) );

/* enqueue the stylsheet */
wp_enqueue_style( 'monomeath_product_cats_css' );
}
add_action( 'wp_enqueue_scripts', 'monomeath_product_cats_css' );
function monomeath_product_subcategories( $args = array() ) {
if ( ! is_paged() ) :
$terms = get_terms( 'product_cat', array( 'parent' => get_queried_object_id() ) );
if ( $terms ) : ?>
<ul class="blocks-3">
<?php foreach ( $terms as $term ) : ?>
<li>
<a href="<?php echo esc_url( get_term_link( $term ) ); ?>"><?php woocommerce_subcategory_thumbnail( $term ); ?></a>
<h3>
<a href="<?php echo esc_url( get_term_link( $term ) ); ?>"><?php echo esc_html( $term->name ); ?></a>
<span class="count">(<?php echo absint( $term->count ); ?>)</span>
</h3>
</li>
<?php endforeach; ?>
</ul>
<?php endif;
endif; ?>
<h2 class="shopsubtitle"><?php esc_html__( 'Individual Items' ); ?></h2>
<?php }
add_action( 'woocommerce_before_shop_loop', 'monomeath_product_subcategories', 50 );

Далее нам нужно изменить размер миниатюр чтоб они не зависели от нашего магазина

function woocommerce_subcategory_thumbnail( $category ) { 
    $small_thumbnail_size = apply_filters( 'subcategory_archive_thumbnail_size', 'shop_catalog' ); 
    $dimensions = wc_get_image_size( $small_thumbnail_size ); 
    $thumbnail_id = get_woocommerce_term_meta( $category-&gt;term_id, 'thumbnail_id', true ); 
 
    if ( $thumbnail_id ) { 
        $image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size ); 
        $image = $image[0]; 
    } else { 
        $image = wc_placeholder_img_src(); 
    } 
 
    if ( $image ) { 
        // Prevent esc_url from breaking spaces in urls for image embeds 
        // Ref: https://core.trac.wordpress.org/ticket/23605 
        $image = str_replace( ' ', '%20', $image ); 
 
        echo '&lt;img src=&quot;' . esc_url( $image ) . '&quot; alt=&quot;' . esc_attr( $category-&gt;name ) . '&quot; width=&quot;200&quot; height=&quot;200&quot; /&gt;'; 
    } 
} 

Смотрим что у нас получилось

Вот пожалуй и все, всем приятно работы!

  1. evgeniy (Автор)

    Закиньте оба кода в шаблон function.php И ВСЕ БУДЕТ РАБОТАТЬ

  2. Куаныш

    Куда пихать эти файлы ? Запихал в function.php сайт стал не рабочим
    function woocommerce_subcategory_thumbnail( $category ) {
    $small_thumbnail_size = apply_filters( ‘subcategory_archive_thumbnail_size’, ‘shop_catalog’ );
    $dimensions = wc_get_image_size( $small_thumbnail_size );
    $thumbnail_id = get_woocommerce_term_meta( $category->term_id, ‘thumbnail_id’, true );

    if ( $thumbnail_id ) {
    $image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size );
    $image = $image[0];
    } else {
    $image = wc_placeholder_img_src();
    }

    if ( $image ) {
    // Prevent esc_url from breaking spaces in urls for image embeds
    // Ref: https://core.trac.wordpress.org/ticket/23605
    $image = str_replace( ‘ ‘, ‘%20’, $image );

    echo ‘<img src="’ . esc_url( $image ) . ‘" alt="’ . esc_attr( $category->name ) . ‘" width="200" height="200" />’;
    }
    }

  3. Андрей

    Спасибо за статью!
    Но при использовании пагинации информация на странице дублируется.

© 2012–2017 / wp-city.ru / Авторские шаблоны WORDPRESS / Создание сайтов

evgeniy38868     krizisvt@i.ua