/ Плагины / Хуки для woocommerce

Хуки для woocommerce

HIT

27.08.2015

16067

Здесь собраны наиболее востребованные хуки 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 my_theme_woocommerce_taxonomy_archive_description() {
    if ( is_tax( array( 'product_cat', 'product_tag' ) ) && get_query_var( 'paged' ) != 0 ) {
        $description = wc_format_content( term_description() );
        if ( $description ) {
            echo '<div class="term-description">' . $description . '</div>';
        }
    }
}
add_action( 'woocommerce_archive_description', 'my_theme_woocommerce_taxonomy_archive_description');

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

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 );

Обернуть описание категории товаров в div

function add_class_to_term_description($term_description) {
	if( !is_admin() ) {
		echo '<div class="cell">' . $term_description. '</div>';
	}
}
add_filter( 'term_description', 'add_class_to_term_description' );

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 многое поменялось, в частности классы элементов.
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Приложить к товару файл

Приложить к товару файл

Рассмотрим какие существуют решение по добавлению к товару файлов: изображений, текстов и прочего. Customer Upload Files for WooCommerce Платное решение от Woo за 49$ (14.04.2021). Включает функционал по добавлению файла(ов) Читать далее »

Обзор плагинов по созданию скидок

Обзор плагинов по созданию скидок

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

Различные наработки по Woocommerce

Различные наработки по Woocommerce

Очередной сборник различных наработок для плагина Woocommerce. Изменить вывод заголовка товара Выведем вместо заголовка краткий заголовок, созданный в виде дополнительного поля. Создание поля Выводы в каталоге и карточке товара. Если Читать далее »

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

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

Хуки для woocommerce
Управление Owl-каруселью внешним интерфейсом
Рекомендации для васУправление Owl-каруселью внешним интерфейсомOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.