/ Сайтостроение / Плагины / Интересные фишки для Woocommerce

Интересные фишки для Woocommerce

17.04.2019

239

Продолжаем серию интересных доработок для Woocmmerce.

Выведем дату последней покупки товара

У товара такого мета поля нет, нужно сопоставлять наименования (перебирая заказы). Для этого создаем запрос на перебор БД:

function get_orders_ids_by_product_id( $product_id, $order_status = array( 'wc-processing' ) ){
    global $wpdb;

    $results = $wpdb->get_col("
        SELECT order_items.order_id
        FROM {$wpdb->prefix}woocommerce_order_items as order_items
        LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id
        LEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID
        WHERE posts.post_type = 'shop_order'
        AND posts.post_status IN ( '" . implode( "','", $order_status ) . "' )
        AND order_items.order_item_type = 'line_item'
        AND order_item_meta.meta_key = '_product_id'
        AND order_item_meta.meta_value = '$product_id'
		ORDER BY post_date DESC
		LIMIT 1
    ");

    return $results;
}

В параметрах функции необходимо указать значения статусов заказа.

На заметку: синтаксис при переборе БД ORDER BY и LIMIT, чтобы получать один последний по дате заказ.

Далее создаем функцию вывода в карточке товара:

function get_last_date_buy_product() {
	global $product;
	$orders_ids = get_orders_ids_by_product_id( $product->get_id() );
	if ( $orders_ids ) { 
		$order = wc_get_order( $orders_ids[0] );
		$order_date = date('d.m.y', strtotime($order->get_date_completed()));
		echo '<div class="last-date">Последняя дата покупки: '.$order_date.'</div>'; 
	}
}
add_filter( 'woocommerce_single_product_summary', 'get_last_date_buy_product', 55 );

date(‘d.m.y’, strtotime($order->order_date)); — получение необходимого формата даты.

Рекомендованные товары в корзине

Выводим в корзине рекомендованные товары из определенной категории, кроме товаров которые уже есть в корзине

// Добавление в корзину Рекомендованных товаров
function related_products_in_cart() { 
	$products_ids_array = array(); // создаем массив товаров в корзине
	foreach( WC()->cart->get_cart() as $cart_item ){ $products_ids_array[] = $cart_item['product_id']; }
	
	$args = array(
		'post_type' => 'product',
		'posts_per_page' => 4,
		'product_cat'    => 'promo',
		'post__not_in' => $products_ids_array
	);
	query_posts($args);
	if(have_posts()) :
		echo '<h3>Вам также может понравится</h3><div class="carousel"><ul class="multiple-items woocommerce products">';
		while(have_posts()) : the_post();
			get_template_part('solus-product');
		endwhile; 
		echo '</ul></div>';
	endif; wp_reset_query();
};
add_action( 'woocommerce_cart_collaterals', 'related_products_in_cart', 12 );

Почему то вывод товаров через query_posts получает правильные wc_product_class(); а при выводе через get_posts их нет.

Содержимое solus-product:

<li <?php wc_product_class(); ?>><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></li>

Добавляем слово Цена перед стоимостью товара

//Добавляем слово «Цена»
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
	if ( !empty ( $price ) ) {
		return 'Цена: '.$price;
	}
}

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Шорткод вывода товаров по метке

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

Иногда требуется быстро вывести товары с определенной меткой. Данный шорткод еще не испытывал. // Шорткод для вывода товаров по метке function woo_products_by_tags_shortcode( $atts, $content = null ) { // Get Читать далее »

/
«Правильные» похожие товары в woocommerce

«Правильные» похожие товары в woocommerce

Похожие товары реализованы не совсем грамотно: если добавлять товарам метки (присущие большинству товаров, например 33 класс у ламината), то похожие товары будут выводится практически одни и те же. Исправляем данный Читать далее »

Переключение вида вывода товаров

Переключение вида вывода товаров

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

/

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

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

Интересные фишки для Woocommerce
Нестандартный цикл wordpress
Рекомендации для васНестандартный цикл wordpressOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.