/ Сайтостроение / Плагины / Доработка функционала Woocommerce

Доработка функционала Woocommerce

HIT

02.11.2016

3441

Продолжаем дорабатывать различные аспекты модуля Woocommerce.

Общий вес заказа

Чтобы выводить общий вес заказа, нужно в шаблонах cart-totals.php (в корзине) и/или review-order.php (в заказе) добавить следующий код (перед закрывающим тегом таблицы /table):

<tr class="total-weight">
<?php global $woocommerce; ?>
<th><?php _e('Общий вес', 'woocommerce'); ?></th>
<td><?php
$total_weight = $woocommerce->cart->cart_contents_weight;
$total_weight .= ' '.get_option('woocommerce_weight_unit');
echo $total_weight;
?></td>
</tr>

Автообновление корзины, при изменении количества

// Автоматическое обновлении корзины, при изменении количества товаров
add_action( 'wp_footer', 'cart_update_qty_script' );

function cart_update_qty_script() {
if (is_cart()) :
?>
<script>
jQuery('div.woocommerce').on('change', '.qty', function(){
jQuery("[name='update_cart']").trigger("click");
});
</script>
<?php
endif;
}

Нельзя убирать input «Обновить», если он не нужен его надо просто скрыть display: none, без него обновление не работает

Не показывать остатки (В наличие)

Не показывать количество товара, ограничившись надписью В наличие

// Настройка отображения наличия товара

add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $_product ) {
    
    // Change In Stock Text
    if ( $_product->is_in_stock() ) {
        $availability['availability'] = __('В наличие', 'woocommerce');
    }
    // Change Out of Stock Text
    if ( ! $_product->is_in_stock() ) {
        $availability['availability'] = __('Нет в наличие', 'woocommerce');
    }
    return $availability;
}

Также можно добавить интересное уведомление о наличии, если остался один товар в наличии:

if ( $_product->get_stock_quantity() == '1' ) {
   $availability['availability'] = __('<i class="fa fa-clock-o" aria-hidden="true"></i> Последний товар', 'woocommerce');
}

Если у нас в каталоге выведено поле количество, а товар в наличии остался все один, поле количество исчезает автоматически, вместо него можно вывести текст:

// Текст вместо кнопок количества, если последний товар
function woocommerce_last_stock_product() { 
	global $product;
	if ( $product->get_stock_quantity() == '1' ) {
        echo '<p class="laststock">Последний товар</p>';
    }
};
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_last_stock_product', 7 );

Поле количество, которое не выводиться, лучше скрывать более надежно (чем opacity: 0;):
.quantity.hidden {display: none;}

Автоматическая нумерация строк корзины

Если нам нужно реализовать автоматическую нумерацию строк наименований корзины, нужно сделать следующее:

1. В файле шаблона woocommerce/cart/cart.php добавить в таблицу <th class=»product-number»>№</th>
2. Прописать CSS

/* Нумерация строк */

.cart {border-collapse: collapse; counter-reset: schetchik;}

.cart tbody tr {counter-increment: schetchik;}

.cart td, .cart tbody tr:before {text-align: center; border: 1px solid #ccc;}

.cart tbody tr:before {display: table-cell; vertical-align: middle;}

.cart tbody tr:before, .cart b:after {content: counter(schetchik);}

Выводить пустой рейтинг

Чтобы выводить пустой рейтинг в шаблоне товара достаточно в файле single-product/rating.php отключить проверку (//)

if ( $rating_count > 0 ) :

endif;

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

// Woocommerce rating stars always
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
add_action('woocommerce_after_shop_loop_item_title', 'get_star_rating', 2 );
function get_star_rating()
{
global $woocommerce, $product;
$average = $product->get_average_rating();

echo '<div class="star-rating"><span style="width:'.( ( $average / 5 ) * 100 ) . '%"><strong itemprop="ratingValue" class="rating">'.$average.'</strong> '.__( 'out of 5', 'woocommerce' ).'</span></div>';
}

В данном случае товары с пустым рейтингом будут выводиться с пятью пустыми звездами. Но можно сделать проверку и пустой рейтинг как-либо оформить по особенному

function get_star_rating() {
global $woocommerce, $product;
$average = $product->get_average_rating();

if($average > 0) { echo '<div class="star-rating"><span style="width:'.( ( $average / 5 ) * 100 ) . '%"><strong itemprop="ratingValue" class="rating">'.$average.'</strong> '.__( 'out of 5', 'woocommerce' ).'</span></div>'; }
else { echo '<div class="star-rating rating-empty"></div>'; }
}

Теперь у блока с пустым рейтингом появился дополнительный класс — rating-empty. Можно задать ему любые свойства css. Например .rating-empty:before {color: whitesmoke !important;}, рейтинг будет едва виден.

Убрать «Подытог»

// Убираем строку «Подытог»
add_filter( 'woocommerce_get_order_item_totals', 'adjust_woocommerce_get_order_item_totals' );

function adjust_woocommerce_get_order_item_totals( $totals ) {
  unset($totals['cart_subtotal']  );
  return $totals;
}

Изменить изображение placeholder

// Изменить миниатюру NO-IMAGE

add_action( 'init', 'custom_fix_thumbnail' );
 
function custom_fix_thumbnail() {
add_filter('woocommerce_placeholder_img_src', 'custom_woocommerce_placeholder_img_src');
   
	function custom_woocommerce_placeholder_img_src( $src ) {
	$upload_dir = wp_upload_dir();
	$uploads = untrailingslashit( $upload_dir['baseurl'] );
	$src = $uploads . '/2017/01/placeholder2.png';
	 
	return $src;
	}
}

Убрать скобки с счетчиков товаров

Убираем круглые скобки с счетчиков товаров в виджете Категории товаров

function categories_postcount_filter ($variable) {
   $variable = str_replace('(', ' ', $variable);
   $variable = str_replace(')', ' ', $variable);
   return $variable;
}
add_filter('wp_list_categories','categories_postcount_filter');

Убрать скобки в выводе категорий в архивах

function archive_postcount_filter ($variable) {
   $variable = str_replace('(', ' ', $variable);
   $variable = str_replace(')', ' ', $variable);
   return $variable;
}
add_filter('get_archives_link', 'archive_postcount_filter');

Убираем скобки счетчиков товаров в виджете Фильтр по атрибутам

function archive_postcount_filter ($variable) {
   $variable = str_replace('(', ' ', $variable);
   $variable = str_replace(')', ' ', $variable);
   return $variable;
}
add_filter('woocommerce_layered_nav_count', 'archive_postcount_filter');

Тэги: , ,

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

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

Шорткоды woocommerce

Для вывода (например) на главной странице сайта элементов WC. Последние продукты Полезно для использования на главной странице. Определяет, сколько товаров показывать на странице и количество сколько столбцов. Код: array( 'post_type' Читать далее »

/
Быстрый просмотр товара без плагина

Быстрый просмотр товара без плагина


Deprecated: Function create_function() is deprecated in /home/htvtwmhs/public_html/wp-content/plugins/wp-spamshield/wp-spamshield.php on line 2033

В одной из предыдущих статей мы научились вызывать ajax’ом содержимое записи. Теперь настроим и доработаем данный функционал для товаров woocommerce. Создание функционала Техническая часть (скрипты, стили) остается той же что Читать далее »

Woocommerce основы

Woocommerce основы

Наиболее часто встречающиеся и необходимые вызовы при использовании плагина woocommerce, а так же прочие хитрости при работе с woocommerce. <?php echo $_product->get_sku( $cart_item ); ?> // Вывести артикул в корзине Читать далее »

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

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

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