WP-CITY.RU

Недорогой, функциональный сайт или Интернет-магазин — это реально!


Заказать сейчас

Дополнения для интернет магазина на WooCommerce

Активация поддержки WooCommerce в темах

add_action( 'after_setup_theme', 'woocommerce_support' );
function woocommerce_support() {
    add_theme_support( 'woocommerce' );
}

После добавления кода в functions.php вашей темы, WooCommerce будет ее полностью поддерживать.

Скрыть кнопку подробнее для товаров выставленных на Распродажу

/*
 * Вставить в functions.php
 **/
if (!function_exists('woocommerce_template_loop_add_to_cart')) {
	function woocommerce_template_loop_add_to_cart() {
		global $product;
		if (!$product->is_in_stock()) return;
		woocommerce_get_template('loop/add-to-cart.php');
	}
}

Отобразить ссылку на оформление заказа в файле шаблона

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

global $woocommerce;
 
if ( sizeof( $woocommerce->cart->cart_contents) > 0 ) :
	echo '<a href="' . $woocommerce->cart->get_checkout_url() . '" title="' . __( 'Checkout' ) . '">' . __( 'Checkout' ) . '</a>';
endif;

Отобразить содержимое корзины и общую сумму

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

<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>">
<?php echo sprintf (_n( '%d item', '%d items', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?>
</a>

Для того, чтобы подключить Ajax для добавления товара в корзину корзину (т.е. при добавлении товара корзина обновляется без перезагрузки страницы), используйте следующий код:

<?php
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );
 
function woocommerce_header_add_to_cart_fragment( $fragments ) {
	ob_start();
	?>
	<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo sprintf (_n( '%d item', '%d items', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> 
	<?php
	
	$fragments['a.cart-contents'] = ob_get_clean();
	
	return $fragments;
}

Отключить вывод подобных товаров

<?php
/*
 * wc_remove_related_products
 * 
 * Добавьте код в файл functions.php вашей темы.  
 */
function wc_remove_related_products( $args ) {
	return array();
}
add_filter('woocommerce_related_products_args','wc_remove_related_products', 10); 

Изменить картинку по умолчанию

/*
* вставить в файл functions.php вашей темы или в ваш плагин. 
* Замените имя и путь к изображению на свои
*
**/
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 . '/2012/07/thumb1.jpg'; 
	 
	return $src;
	}
}

Изменить количество товаров отображаемых на странице

//Показать 24 товара на странице
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 );

Изменить количество миниатюр в одном ряду в галерее товара

add_filter ( 'woocommerce_product_thumbnails_columns', 'xx_thumb_cols' );
 function xx_thumb_cols() {
     return 4; // добавление класса .last каждой четвертой миниатюре
 }

Изменение количества выводимых сопутствующих товаров

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15 );
 
if ( ! function_exists( 'woocommerce_output_upsells' ) ) {
	function woocommerce_output_upsells() {
	    woocommerce_upsell_display( 3,3 ); //Показать 3 модели рядами  по 3 штуки
	}
}

Установка размеров изображений для WooCommerce после активации темы

<?php
/**
 * Установка размеров изображений
 */
function yourtheme_woocommerce_image_dimensions() {
	global $pagenow;
 
	if ( ! isset( $_GET['activated'] ) || $pagenow != 'themes.php' ) {
		return;
	}
 
  	$catalog = array(
		'width' 	=> '400',	// px
		'height'	=> '400',	// px
		'crop'		=> 1 		// true
	);
 
	$single = array(
		'width' 	=> '600',	// px
		'height'	=> '600',	// px
		'crop'		=> 1 		// true
	);
 
	$thumbnail = array(
		'width' 	=> '120',	// px
		'height'	=> '120',	// px
		'crop'		=> 0 		// false
	);
 
	// Image sizes
	update_option( 'shop_catalog_image_size', $catalog ); 		// Миниатюра категории продуктов
	update_option( 'shop_single_image_size', $single ); 		// Основное изображение товара 
	update_option( 'shop_thumbnail_image_size', $thumbnail ); 	// Миниатюра галереи товаров
}
 
add_action( 'after_switch_theme', 'yourtheme_woocommerce_image_dimensions', 1 );

Показать ссылки на категории продуктов в хлебных крошках для WooFramework

// Получить хлебные крошки на страницах продукта: Главная > Магазин > Категория продукта > Продукт
add_filter( 'woo_breadcrumbs_trail', 'woo_custom_breadcrumbs_trail_add_product_categories', 20 );
 
function woo_custom_breadcrumbs_trail_add_product_categories ( $trail ) {
  if ( ( get_post_type() == 'product' ) && is_singular() ) {
		global $post;
		
		$taxonomy = 'product_cat';
		
		$terms = get_the_terms( $post->ID, $taxonomy );
		$links = array();
 
		if ( $terms && ! is_wp_error( $terms ) ) {
		$count = 0;
			foreach ( $terms as $c ) {
				$count++;
				if ( $count > 1 ) { continue; }
				$parents = woo_get_term_parents( $c->term_id, $taxonomy, true, ', ', $c->name, array() );
 
				if ( $parents != '' && ! is_wp_error( $parents ) ) {
					$parents_arr = explode( ', ', $parents );
					
					foreach ( $parents_arr as $p ) {
						if ( $p != '' ) { $links[] = $p; }
					}
				}
			}
			
			// Add the trail back on to the end.
			// $links[] = $trail['trail_end'];
			$trail_end = get_the_title($post->ID);
 
			// Add the new links, and the original trail's end, back into the trail.
			array_splice( $trail, 2, count( $trail ) - 1, $links );
			
			$trail['trail_end'] = $trail_end;
		}
	}
 
	return $trail;
} // Конец woo_custom_breadcrumbs_trail_add_product_categories()
 
/**
 * Получение родительского термина.
 *
 * @param int $id Term ID.
 * @param string $taxonomy.
 * @param bool $link Необязательно, по умолчанию false. Форматировать как ссылку.
 * @param string $separator Необязательно, по умолчанию '/'. Сепаратор (разделитель между крошками).
 * @param bool $nicename Необязательно, по умолчанию  false. Использовать слуг для отображения.
 * @param array $visited Необязательно.
 * @return string
 */
 
if ( ! function_exists( 'woo_get_term_parents' ) ) {
function woo_get_term_parents( $id, $taxonomy, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
	$chain = '';
	$parent = &get_term( $id, $taxonomy );
	if ( is_wp_error( $parent ) )
		return $parent;
 
	if ( $nicename ) {
		$name = $parent->slug;
	} else {
		$name = $parent->name;
	}
 
	if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
		$visited[] = $parent->parent;
		$chain .= woo_get_term_parents( $parent->parent, $taxonomy, $link, $separator, $nicename, $visited );
	}
 
	if ( $link ) {
		$chain .= '<a href="' . get_term_link( $parent, $taxonomy ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . '">'.$parent->name.'</a>' . $separator;
	} else {
		$chain .= $name.$separator;
	}
	return $chain;
} // End woo_get_term_parents()
}

Вывести ссылку на аккаунт пользователя в файле шаблона

Сниппет отображает ссылку на раздел «Аккаунт пользователя». Если пользователь не авторизован, то будет перенаправлен на страницу «Авторизация/Регистрация». Если авторизован, то ссылка отобразит «Мой Аккаунт», после чего можно зайти непосредственно на страницу своей учетной записи.

<?php if ( is_user_logged_in() ) { ?>
 	<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Мой Аккаунт','woothemes'); ?>"><?php _e('My Account','woothemes'); ?></a>
 <?php } 
 else { ?>
 	<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Авторизация / Регистрация','woothemes'); ?>"><?php _e('Авторизация / Регистрация','woothemes'); ?></a>
 <?php } ?>

Отключить стили по умолчанию

WooCommerce подключает три таблицы стилей по умолчанию. С помощью следующего сниппета вы можете отключить их все:

add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );

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

// Отключение стилей по одному
add_filter( 'woocommerce_enqueue_styles', 'jk_dequeue_styles' );
function jk_dequeue_styles( $enqueue_styles ) {
	unset( $enqueue_styles['woocommerce-general'] );	// Отключение общий стилей
	unset( $enqueue_styles['woocommerce-layout'] );		// Отключение стилей шаблонов
	unset( $enqueue_styles['woocommerce-smallscreen'] );	// Отключение оптимизации для маленьких экранов
	return $enqueue_styles;
}
 
// // Или просто удалить их все в одной строкой
add_filter( 'woocommerce_enqueue_styles', '__return_false' );

Затем подключите свою таблицу стилей:

function wp_enqueue_woocommerce_style(){
	wp_register_style( 'mytheme-woocommerce', get_template_directory_uri() . '/css/woocommerce.css' );
	
	if ( class_exists( 'woocommerce' ) ) {
		wp_enqueue_style( 'mytheme-woocommerce' );
	}
}
add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' );

Приятной всем работы, далее список будет пополнятся!

© 2012–2017 / wp-city.ru / Авторские шаблоны WORDPRESS / Создание сайтов

evgeniy38868     krizisvt@i.ua