/ Сайтостроение / Плагины / Хуки для woocommerce

Хуки для woocommerce

HIT

27.08.2015

7832

Здесь собраны наиболее востребованные хуки woocommerce, которые могут пригодится при настройке любого интернет-магазина. С другими полезными хуками можно ознакомиться здесь

Необходимые части кода вставляем в файл functions (лучше использовать отдельный файл для функций woocommerce)

Изменения базовых параметров WC

//количество выводимых на странице товаров
add_filter('loop_shop_per_page', create_function('$cols', 'return 30;')); // устаревшая функция (конфликтует с php 7.2)
add_filter( 'loop_shop_per_page', function ( $cols ) { return 20; }, 20 ); // актуальная функция


//!!! Изменяем количество колонок
add_filter('loop_shop_columns', 'loop_columns');
	if (!function_exists('loop_columns')) {
		function loop_columns() {
		return 3;
	}
}


// Изменяем количество похожих товаров
add_filter( 'woocommerce_output_related_products_args', 'jk_related_products_args' );
function jk_related_products_args( $args ) {
	$args['posts_per_page'] = 3; // количество "Похожих товаров"
	$args['columns'] = 3; // количество колонок
	return $args;
}

Убрать ссылку на товар из категории

remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );

Изменить ссылку Добавить в корзину на переход в карточку товара:

// Убрать кнопку добавить в корзину из категорий
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
add_action( 'woocommerce_after_shop_loop_item', 'add_inside_enter_button' );
function add_inside_enter_button() { 
	global $product;
	echo '<a class="button product_type_simple add_to_cart_button" href="'.get_permalink($product->get_ID()).'">Подробнее</a>'; 
};

Переход в Оформление товара при добавлении товара в корзину (в настройках WC можно настроить переход в Корзину при добавлении товара):

// Редирект к оформлению после добавления товара
function bbloomer_redirect_checkout_add_cart( $url ) {
    $url = get_permalink( get_option( 'woocommerce_checkout_page_id' ) ); 
    return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'bbloomer_redirect_checkout_add_cart' );

Убрать ссылку на полное изображение товара (в шаблоне товара)

add_filter('woocommerce_single_product_image_thumbnail_html','wc_remove_link_on_thumbnails' );

function wc_remove_link_on_thumbnails( $html ) {
     return strip_tags( $html,'<img>' );
}

Изменение составляющих WC: категория товаров

// описание категории после товаров
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_description', 100 );

// html теги в описании категории товара
foreach ( array( 'pre_term_description' ) as $filter ) {
	remove_filter( $filter, 'wp_filter_kses' );
}
foreach ( array( 'term_description' ) as $filter ) {
	remove_filter( $filter, 'wp_kses_data' );
}

Выводим изображение категории перед описанием

function woocommerce_taxonomy_archive_image() {
	global $wp_query;
	$term = $wp_query->get_queried_object();
	$thumbnail_id = get_term_meta( $term->term_id, 'thumbnail_id', true );
	$image = wp_get_attachment_url( $thumbnail_id );

	if (!empty($image)) {
		echo '<img src="'.$image.'" title="'.$term->name.'" alt="'.$term->name.'" 
		srcset="'.wp_get_attachment_image_srcset( $thumbnail_id, 'large' ).'" sizes="'.wp_get_attachment_image_sizes( $thumbnail_id, 'large' ).'">'; 
	}
}
add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_image', 90 );

Альтернативный вариант вывода изображения категории (в некотором смысле более правильный):

// Выводим изображение таксономии
function woocommerce_taxonomy_archive_image() {
	global $wp_query;
	$term = $wp_query->get_queried_object();
	if ( is_tax() ) {
		$thumbnail_id = get_term_meta( $term->term_id, 'thumbnail_id', true );
		$image = wp_get_attachment_url( $thumbnail_id );
		echo '<img src="'.$image.'" title="'.$term->name.'" alt="'.$term->name.'" class="term-image" 
		srcset="'.wp_get_attachment_image_srcset( $thumbnail_id, 'large' ).'" sizes="'.wp_get_attachment_image_sizes( $thumbnail_id, 'large' ).'">';
	}
}
add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_image', 90 );

Ajax-добавление в шаблоне товара

Как известно в карточке товара при добавлении страница перезагружается. Изменим это:

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_loop_add_to_cart', 30 );

Решение не идеальное, т.к. мы убираем функционал количества, но если данный параметр не важен, то можно использовать.
Если нужно чтобы количество все же было, то нужно использовать функцию добавления количества в шаблоне архива, добавив к ней еще один хук:

add_action( 'woocommerce_single_product_summary', 'custom_quantity_field_archive', 30 );

И все же решение корявое, т.к. в вариативных товарах и товарах без цены будут дублироваться кнопки из шаблона архивов

Есть неплохой плагин создающий данную возможность — WooCommerce Ajax Add to Cart. Но нужно устанавливать последнюю версию, т.к. в WC 3.0 многое поменялось, в частности классы элементов.

Тэги: ,

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

  • Похожие записи
  • Комментарии
  • Вложения
Изменяем админку Woocommerce

Изменяем админку Woocommerce

В данной статье собираются сниппеты меняющие функционал или внешний вид админ части Woocommerce. Вернуть выпадающий список категорий С версии WC 3.2 изменился фильтр постов в админке, конкретно выбор категории. Теперь Читать далее »

Оформление полей заказчика

Оформление полей заказчика

При заказе товара необходимо заполнить данные покупателя (имя, телефон, адрес доставки и т.д.). В стандартном варианте поля эти несколько «раздуты», много лишнего, требуется некоторое оформление. Можно использовать плагин Saphali Woocommerce Читать далее »

/
Добавление полей при оформлении заказа

Добавление полей при оформлении заказа

Добавляем поля для шаблона Оформление заказа Woocommerce. Стандартные поля Woocommerce делятся на 3 группы: поля оплаты (billing) поля доставки (shipping) поля аккаунта (account) Добавляем текстовое поле в стандартные группы WC Читать далее »

/

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

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

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