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

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

HIT

26.08.2016

7323

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

// Шорткод для вывода товаров по метке
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"]

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

  • Похожие записи
  • Комментарии
  • Вложения
Общая библиотека мультисети

Общая библиотека мультисети

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

Пользовательский метод доставки

Пользовательский метод доставки

Создадим пользовательский метод доставки для Woocommerce 3.0. Метод создадим в виде плагина. Создадим для пользовательского метода уведомление при превышении веса (лимит установлен на 0): т.е. если у нас будет в Читать далее »

Хуки для woocommerce

Хуки для woocommerce

Здесь собраны наиболее востребованные хуки woocommerce, которые могут пригодится при настройке любого интернет-магазина. С другими полезными хуками можно ознакомиться здесь Необходимые части кода вставляем в файл functions (лучше использовать отдельный Читать далее »

/

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

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

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