Полезные заметки по WooCommerce

При разработке интернет-магазина на WooCommerce частенько возникают вопросы, как вывести те или иные данные. В этой статье рассмотрим некоторые заметки.


Заметка #1 – Вывести описание текущей категории WooCommerce

<?php do_action( 'woocommerce_archive_description' ); ?>

Заметка #2 – Вывести миниатюру текущей категории WooCommerce

<?php global $product;
    if (is_product_category()) {
        global $wp_query;
        $cat = $wp_query->get_queried_object();
        $thumbnail_id = get_woocommerce_term_meta($cat->term_id, 'thumbnail_id', true);
        $image = wp_get_attachment_url($thumbnail_id);
        if ($image) {
            echo '<img src="' . esc_url($image) . '" alt="" />';
        }
}?>

Заметка #3 – Вывести список подкатегорий текущей категории WooCommerce, в которой мы находимся. Код выводит только те категории, в которых есть хотя бы 1 товар, категории без товаров не выводятся.

<?php
$parentid = get_queried_object_id();     
$args = array('parent' => $parentid);
$terms = get_terms( 'product_cat', $args );
if ( $terms ) {
    echo '<div class="categories_list categorypage clearfix">';
        foreach ( $terms as $term ) {        
            echo '<div class="item">';  
                    echo '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '">';
					woocommerce_subcategory_thumbnail( $term );
					echo '<span> '.$term->name.'</span>';
                    echo '</a>';                                           
            echo '</div>';
    }
    echo '</div>';
} 
?>

Заметка #4 – Вывести заголовок страницы WooCommerce, скрыть его, если заголовка у страницы нет.

<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
<h1 class="title_style"><?php woocommerce_page_title(); ?></h1>
<?php endif; ?>

Заметка #5 – Вывести значение атрибута товара WooCommerce, зная его slug name.

<?php global $product; echo $product->get_attribute('slugname'); ?> // slugname - slug вашего атрибута

Заметка #6 – Вывести все атрибуты товара WooCommerce.

<?php global $product; echo $product->list_attributes();?>

Заметка #7 – Вывести краткое описание товара. Краткое описание товара указывается в админке, при редактировании товара.

<?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ) ?>

Заметка #8 – Вывести кнопку “Добавить в корзину”, которая будет добавлять одну единицу текущего товара в корзину.

<?php echo apply_filters( 'woocommerce_loop_add_to_cart_link', // WPCS: XSS ok.
  sprintf( '<a href="%s" data-quantity="%s" class="btn">Добавить в корзину &rarr;</a>',
    esc_url( $product->add_to_cart_url() ),
    esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
    esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
    isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
    esc_html( $product->add_to_cart_text() )
  ),
$product, $args );?>

Заметка #9 – Вывести артикул товара WooCommerce.

<?php echo ( $sku = $product->get_sku() ) ? $sku : esc_html__( 'N/A', 'woocommerce' ); ?>

Заметка #10 – Вывести стоимость текущего товара WooCommerce.

<?php echo $product->get_price(); ?>

Заметка #11 – В карточке товара вывести похожие товары WooCommerce из этой же категории.

<?php echo do_shortcode( '[related_products per_page="3"]' ); ?>

Пояснение: Вывод происходит шорткодом, вы можете указать количество выводимых товаров. Переопределить шаблон вывода товаров нужно в шаблоне /woocommerce/content-related.php


Заметка #12 – В результатах поиска отображаем только товары из магазина.

Добавляем в functions.php темы:

// в результатах поиска отображаем только товары из магазина
function dco_pre_get_posts($query) {
    if (!is_admin() && $query->is_main_query()) {
        if ($query->is_search) {
            $query->set('post_type', 'product');
        }
    }
}

add_action('pre_get_posts', 'dco_pre_get_posts');

Данная статья в процессе будет разрастаться, если у Вас есть, чем поделиться – пишите в комментариях, буду добавлять заметки по WooCommerce сюда.

Другие публикации