Сегодня я хочу поделиться несколькими полезными сниппетами для Вукоммерс, которые помогут сделать торговлю ещё проще и удобнее.
Напомню, Вукоммерс — прекрасный плагин электронной торговли для Вордпресс, который позволяет без особых сложностей и абсолютно бесплатно превратить любой Вордпресс-сайт в полноценный интернет-магазин. В WooCommerce прием платежей реализуется с помощью плагинов.
Все сниппеты традиционно размещаются в файле functions.php активной в данный момент темы или выносятся в отдельный плагин, если тема не постоянна.
Содержание
- Заменить «хлебные крошки» WooCommerce на крошки Yoast SEO
- Изменить количество товаров в строке
- Изменить количество сопутствующих продуктов
- Изменить количество продуктов на странице
- Скрыть платные способы доставки, если доступна бесплатная доставка
- Загрузить файлы CSS и JavaScript только на страницах магазина
- Сделать номер телефона необязательным к заполнению
- Показать экономию в процентах
- Добавить кнопки шаринга на страницы продуктов
- Удалить вкладки со страницы продукта
- Обновить корзину с помощью аякса
- Вывести ссылку на личный кабинет покупателя
- Включить в уведомление администратору информацию о способе оплаты
- Изменить порядок полей на странице оформления заказа
Заменить «хлебные крошки» WooCommerce на крошки Yoast SEO
Yoast SEO — отличный плагин поисковой оптимизации с массой полезных функций, в т.ч. продвинутыми «хлебными крошками», которые можно задействовать вместо стандартных.
if ( ! function_exists( 'evolution_replace_breadcrumbs' ) ) : /** * Replace WooCommerce Breadcrumbs with Yoast breadcrumbs */ function evolution_replace_breadcrumbs() { remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0); function evolution_yoast_breadcrumb() { if ( function_exists('yoast_breadcrumb') ) { yoast_breadcrumb('<nav class="woocommerce-breadcrumb">','</nav>'); } } } add_action( 'init', 'evolution_replace_breadcrumbs' ); endif;
Изменить количество товаров в строке
По-умолчанию в Вукоммерс отображается по четыре товара в строке, исправить это проще простого.
/** * Change number of products per row to 3 */ if (!function_exists('evolution_loop_columns') ) { function evolution_loop_columns() { return 3; // 3 Products in a row } } add_filter('loop_shop_columns', 'evolution_loop_columns');
Изменить количество сопутствующих продуктов
Теперь вы можете самостоятельно устанавливать количество сопутствующих продуктов.
/** * WooCommerce Extra Feature * -------------------------- * * Change number of related products on product page * Set your own value for 'posts_per_page' * */ if (!function_exists('evolution_related_products_args') ) { function evolution_related_products_args( $args ) { $args['posts_per_page'] = 4; // 4 related products $args['columns'] = 4; // All four in a row return $args; } } add_filter( 'woocommerce_output_related_products_args', 'evolution_related_products_args' );
Изменить количество продуктов на странице
Иногда без этого никак.
/** * Custom Product Cols * @return 12 Products per Page */ if (!function_exists('evolution_loop_shop_per_page') ) { function evolution_loop_shop_per_page( $cols ) { $cols = 12; return $cols; } } add_filter( 'loop_shop_per_page', 'evolution_loop_shop_per_page', 20 );
Скрыть платные способы доставки, если доступна бесплатная доставка
Скрываем платные способы доставки на странице оформления заказа, если покупателю доступна бесплатная доставка.
/** * Hide shipping rates when free shipping is available. * Updated to support WooCommerce 2.6 Shipping Zones. * * @param array $rates Array of rates found for the package. * @return array */ if (!function_exists('evolution_hide_shipping_when_free_is_available') ) { function evolution_hide_shipping_when_free_is_available( $rates ) { $free = array(); foreach ( $rates as $rate_id => $rate ) { if ( 'free_shipping' === $rate->method_id ) { $free[ $rate_id ] = $rate; break; } } return ! empty( $free ) ? $free : $rates; } } add_filter( 'woocommerce_package_rates', 'evolution_hide_shipping_when_free_is_available', 100 );
Загрузить файлы CSS и JavaScript только на страницах магазина
Вукоммерс загружает свои файлы на всех страницах Вордпресс. В целях оптимизации нагрузки можно сделать так, чтобы файлы загружались только на страницах, имеющих отношение к магазину.
if (!function_exists( 'evolution_manage_woocommerce_styles' ) ) : /** * Optimize WooCommerce Scripts * Removes WooCommerce styles and scripts from non WooCommerce pages. */ function evolution_manage_woocommerce_styles() { //first check that woo exists to prevent fatal errors if ( function_exists( 'is_woocommerce' ) ) { //dequeue scripts and styles if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() && ! is_account_page() ) { wp_dequeue_style( 'woocommerce-layout' ); wp_dequeue_style( 'woocommerce-smallscreen' ); wp_dequeue_style( 'woocommerce-general' ); wp_dequeue_style( 'evolution-woostyles' ); wp_dequeue_script( 'wc_price_slider' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-add-to-cart' ); wp_dequeue_script( 'wc-cart-fragments' ); wp_dequeue_script( 'wc-checkout' ); wp_dequeue_script( 'wc-add-to-cart-variation' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-chosen' ); wp_dequeue_script( 'woocommerce' ); wp_dequeue_script( 'prettyPhoto' ); wp_dequeue_script( 'prettyPhoto-init' ); wp_dequeue_script( 'jquery-blockui' ); wp_dequeue_script( 'jquery-placeholder' ); wp_dequeue_script( 'fancybox' ); wp_dequeue_script( 'jqueryui' ); } } } add_action( 'wp_enqueue_scripts', 'evolution_manage_woocommerce_styles', 99 ); endif;
Сделать номер телефона необязательным к заполнению
По-умолчанию в Вукоммерс номер телефона покупателя обязателен к заполнению и исправить это никак нельзя. А вдруг у человека нет телефона, проблемы со слухом или он просто предпочитает общаться по электронной почте, например.
if (!function_exists( 'evolution_phone_no_pflicht' ) ) : /** * Make the phone number an optional entry * * @hooked woocommerce_billing_fields() * * @return filter */ function evolution_phone_no_pflicht( $address_fields ) { $address_fields['billing_phone']['required'] = false; return $address_fields; } add_filter( 'woocommerce_billing_fields', 'evolution_phone_no_pflicht', 10, 1 ); endif;
Показать экономию в процентах
Просто еще один из трюков психологического воздействия на покупателя.
if ( !function_exists( 'evolution_custom_sales_price' ) ) : /** * Show percent savings on sale - Only for WooCommerce version 3.0+ * * @add filter to products * * @return filter */ function evolution_custom_sales_price( $price, $regular_price, $sale_price ) { $percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).'%'; $percentage_txt = __(' Spare ', 'evolution' ).$percentage; $price = '<del>' . ( is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price ) . '</del> <ins>' . ( is_numeric( $sale_price ) ? wc_price( $sale_price ) . $percentage_txt : $sale_price . $percentage_txt ) . '</ins>'; return $price; } add_filter( 'woocommerce_format_sale_price', 'evolution_custom_sales_price', 10, 3 ); endif;
Добавить кнопки шаринга на страницы продуктов
Дайте своим покупателям возможность делиться ссылками на продукты в соцсетях. Например, чтобы вывести кнопки плагина Shariff, можно воспользоваться кодом ниже.
if (!function_exists( 'evolution_share_for_woocommerce' ) ) : /** * Implementing share buttons on the page of an individual product * * @hooked woocommerce_share() */ function evolution_share_for_woocommerce() { echo do_shortcode( '[[shariff]]' ); } add_action( 'woocommerce_share', 'evolution_share_for_woocommerce', 5 ); endif;
Другие кнопки подключаются аналогичным образом.
Удалить вкладки со страницы продукта
Иногда некоторые вкладки на страницах товара бывают лишними, скрыть их очень просто.
if (!function_exists( 'evolution_remove_product_tabs' ) ) : /** * Removing the product tabs of the description * * @hooked woocommerce_product_tabs() */ function evolution_remove_product_tabs( $tabs ) { unset( $tabs['description'] ); // Remove the description tab unset( $tabs['reviews'] ); // Remove the reviews tab unset( $tabs['additional_information'] ); // Remove the additional information tab return $tabs; } add_filter( 'woocommerce_product_tabs', 'evolution_remove_product_tabs', 98 ); endif;
Обновить корзину с помощью аякса
Очень удобная для покупателей функция «живого» обновления корзины.
<?php if (!function_exists( 'evolution_header_add_to_cart_fragment' ) ) : /** * Ensure cart contents update when products are added to the cart via AJAX * * @add_filter woocommerce_add_to_cart_fragments */ function evolution_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->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> <?php $fragments['a.cart-contents'] = ob_get_clean(); return $fragments; } add_filter( 'woocommerce_add_to_cart_fragments', 'evolution_header_add_to_cart_fragment' ); endif;
Вывести ссылку на личный кабинет покупателя
Ссылка умная — гостям предлагает войти или зарегистрироваться, а залогиненным выйти.
<?php if ( is_user_logged_in() ) { ?> <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Mein Account','evolution'); ?>"><?php _e('My Account','woothemes'); ?></a> <?php } else { ?> <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Login / Register','evolution'); ?>"><?php _e('Login / Register','woothemes'); ?></a> <?php } ?>
Включить в уведомление администратору информацию о способе оплаты
После каждого заказа администратор магазина получает уведомление по электронной почте с краткой информацией по заказу. В нее можно включить и способ оплаты, например. Иногда это важно.
if (!function_exists( 'evolution_add_payment_method_to_admin_new_order' ) ) : /** * Adding the customer's payment method to the admin email * * @hooked woocommerce_email_after_order_table() */ function evolution_add_payment_method_to_admin_new_order( $order, $is_admin_email ) { if ( $is_admin_email ) { echo '<p><strong>Zahlungsart:</strong> ' . $order->payment_method_title . '</p>'; } } add_action( 'woocommerce_email_after_order_table', 'evolution_add_payment_method_to_admin_new_order', 15, 2 ); endif;
Изменить порядок полей на странице оформления заказа
⚡️ Присоединяйтесь к моему телеграм-каналу! Рассказываю о своих рабочих буднях на фрилансе и делюсь полезными материалами по веб‑разработке.
Лишние поля можно скрыть при необходимости.
<?php if (!function_exists( 'evolution_reorder_woo_fields' ) ) : /** * Alter the order of fields in the checkout area, or remove them completely. * * @add_filter woocommerce_checkout_fields */ function evolution_reorder_woo_fields( $fields ) { //move these around in the order you'd like $fields2['billing']['billing_first_name'] = $fields['billing']['billing_first_name']; $fields2['billing']['billing_last_name'] = $fields['billing']['billing_last_name']; $fields2['billing']['billing_company'] = $fields['billing']['billing_company']; $fields2['billing']['billing_address_1'] = $fields['billing']['billing_address_1']; $fields2['billing']['billing_address_2'] = $fields['billing']['billing_address_2']; $fields2['billing']['billing_city'] = $fields['billing']['billing_city']; $fields2['billing']['billing_postcode'] = $fields['billing']['billing_postcode']; $fields2['billing']['billing_state'] = $fields['billing']['billing_state']; $fields2['billing']['billing_country'] = $fields['billing']['billing_country']; $fields2['billing']['billing_email'] = $fields['billing']['billing_email']; $fields2['billing']['billing_phone'] = $fields['billing']['billing_phone']; //just copying these (keeps the standard order) $fields2['shipping'] = $fields['shipping']; $fields2['account'] = $fields['account']; $fields2['order'] = $fields['order']; return $fields2; } add_filter( 'woocommerce_checkout_fields', 'evolution_reorder_woo_fields' ); endif;
Если не хотите копаться в коде Вордпресс, можно пойти другим путём — воспользоваться сервисом «1С-UMI» и создать интернет магазин самому. Зарегистрируйтесь на сервисе и вы поймете, что сделать готовый интернет-магазин под ключ бесплатно, не прилагая особых усилий, действительно возможно.
По материалам сайта Noupe.comДелаю сайты на Вордпресс с 2008 года, в том числе уникальные инструменты для решения сложных бизнес‑задач.
Подробнее-
За 6 пункт спасибо!