/ Плагины / Шорткод вывода товаров по метке

Шорткод вывода товаров по метке

HIT

26.08.2016

6107

Иногда требуется быстро вывести товары с определенной меткой. Данный шорткод проверял лично — работает.

// Шорткод для вывода товаров по метке
function woo_products_by_tags_shortcode( $atts, $content = null ) {
	// Get attribuets
	extract(shortcode_atts(array(
	"tags" => ''
	), $atts));

	ob_start();

	// Define Query Arguments
	$args = array(
		'post_type' => 'product',
		'posts_per_page' => 10,
		'product_tag' => $tags
	);

	// Create the new query
	$loop = new WP_Query( $args );

	// Get products number
	$product_count = $loop->post_count;

	if( $product_count > 0 ) :

		echo '<div class="tax-product_tag woocommerce-page"><div class="woocommerce"><ul class="products columns-'.esc_attr( wc_get_loop_prop( 'columns' ) ).'">';

		while ( $loop->have_posts() ) : $loop->the_post(); global $product;
			wc_get_template_part( 'content', 'product' );
		endwhile;

		echo '</ul></div></div>';
		
	else :

		_e('No product matching your criteria.');

	endif; // endif $product_count > 0

	return ob_get_clean();
}

add_shortcode("woo_products_by_tags", "woo_products_by_tags_shortcode");

В данной функции предусмотрен вывод товаров по колонкам (wc_get_loop_prop( ‘columns’ )).

Шорткод выглядит так:

[woo_products_by_tags tags="shoes,socks"]

Данный шорткод можно расширять, например добавив в него параметр количество товаров. Для этого нужно дополнить функцию парсинга шорткода:

extract(shortcode_atts(array(
	"tags" => '',
	"per_page" => ''	
), $atts));

и далее функцию выборки товаров:

$args = array(
	'post_type' => 'product',
	'posts_per_page' => $per_page,
	'product_tag' => $tags
);

Вывод товаров по метке без шорткода

Без шорткода товары по метке (product_tag) выводятся так:

<h2 class="index">Под заказ</h2>  
<div class="carousel"><div class="multiple-items woocommerce products">
  
<?php $args = array(
	'post_type' => 'product',
	'posts_per_page' => 4,
	'columns' => 4,
	'tax_query' => array(
		array(
			'taxonomy' => 'product_tag',
			'field' => 'slug',
			'terms' => 'zakaz'
		)
	)
);
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>

	<div <?php post_class( $classes ); ?>><span>
	<?php do_action( 'woocommerce_before_shop_loop_item' );
	do_action( 'woocommerce_before_shop_loop_item_title' );
	do_action( 'woocommerce_shop_loop_item_title' );
	do_action( 'woocommerce_after_shop_loop_item_title' );
	do_action( 'woocommerce_after_shop_loop_item' ); ?>
	</span></div>

<?php endforeach; ?>
<?php wp_reset_postdata() ?>
  
</div></div>

В данном примере также приведена верстка для функционала карусели

Более простой вывод товаров по метке (параметр product_tag):

<div class="carousel"><ul class="multiple-items woocommerce products">
<?php query_posts($query_string.'&post_type=product&posts_per_page=10&product_tag=action');
if(have_posts()) :
while(have_posts()) : the_post();
	get_template_part('solus-product');
endwhile; endif; ?>
</ul></div>

Вывод товаров по метаполю

На основе решения по созданию шорткода вывода товаров по тегам можно сделать вывод товаров по метаполю

// Шорткод для вывода товаров по полю

function woo_products_by_meta_shortcode( $atts, $content = null ) {
	// Get attribuets
	extract(shortcode_atts(array(
		"meta" => '',
		"per_page" => ''	
	), $atts));

	ob_start();

	// Define Query Arguments
	$args = array(
		'post_type' => 'product',
		'posts_per_page' => $per_page,
		'meta_key' => $meta
	);

	// Create the new query
	$loop = new WP_Query( $args );

	// Get products number
	$product_count = $loop->post_count;

	if( $product_count > 0 ) :

		echo '<div class="tax-product_tag woocommerce-page"><div class="woocommerce"><ul class="products columns-'.esc_attr( wc_get_loop_prop( 'columns' ) ).'">';

		while ( $loop->have_posts() ) : $loop->the_post(); global $product;
			wc_get_template_part( 'content', 'product' );
		endwhile;

		echo '</ul></div></div>';
		
	else :

		_e('No product matching your criteria.');

	endif; // endif $product_count > 0

	return ob_get_clean();
}

add_shortcode('woo_products_by_meta', 'woo_products_by_meta_shortcode');

Шорткод будет таким

[woo_products_by_meta meta="_checkbox_new"]

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Вкладка Дополнительная информация

Вкладка Дополнительная информация

У товаров WC есть вкладка Дополнительная информация (Additional Information), в которой по-умолчанию выводятся атрибуты, вес и габариты товара. Добавим в эту вкладку дополнительные данные. Проверки содержит ли товар атрибуты, вес Читать далее »

Metabox woocommerce

Metabox woocommerce

У плагина woocommerce есть набор дополнительных полей при редактировании товара. При необходимости можно в группы полей WC добавить свои произвольные metabox. Должно получится так: Создание и отображение metabox Первый экшн Читать далее »

/
Отключаем стандартные метабоксы

Отключаем стандартные метабоксы

Отключая стандартные метабоксы, мы фактически избавляемся изначально от лишнего функционала. При отключении метабоксов мы также отключаем сами поля, что позволяет существенно разгрузить таблицу wp_postmeta (особенно если у сайта несколько тысяч Читать далее »

Добавить комментарий

Пока нет комментариев. Будь первым!

Шорткод вывода товаров по метке
Мультиязычность сайта
Рекомендации для васМультиязычность сайтаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.