WOOCOMMERCE — МОДИФИКАЦИЯ И ТОНКАЯ НАСТРОЙКА
Рассмотрим тонкую настройку компонента интернет-магазина WooCommerce без внесения изменений в ядро. Описанные здесь модификации безопасны и валидны. При обновлении WordPress и WooCommerce никакие модификации не будут утрачены.
Перед внесением любых изменений рекомендую выполнить резервное копирование сайта (и базы данных).
Добавление валюты «Российский рубль» в магазин на WooCommerce.
Эта модификация добавит рубль в ваш магазин на WooCommerce. Вы можете установитьплагин Saphali Lite и рубль будет добавлен автоматически в комплекте с плагином.
Откройте файл функции темы (для вашей активной темы оформления WordPress). Для этого в админ. панели перейдите в меню «Внешний вид» --> «Редактор» --> «Функции темы» — файл functions.php. Добавьте указанный код в конец файла и сохраните:
add_filter( 'woocommerce_currencies', 'add_my_currency' ); function add_my_currency( $currencies ) { $currencies['ABC'] = __( 'Российский рубль', 'woocommerce' ); return $currencies; } add_filter('woocommerce_currency_symbol', 'add_my_currency_symbol', 10, 2); function add_my_currency_symbol( $currency_symbol, $currency ) { switch( $currency ) { case 'ABC': $currency_symbol = 'руб'; break; } return $currency_symbol; }
Изменение количества товаров на одной странице магазина WooCommerce.
Я рекомендую использовать плагин WooCommerce Customizer — он позволит настроить число продуктов на страницу, число колонок с продуктами на странице магазина.
Если хотите работать без плагина, Вы можете установить произвольное количество товаров, отображаемое по умолчанию на странице Вашего магазина. Цифра 30 в указанном ниже коде задает количество товаров. Измените ее на нужную Вам. Добавьте код в файл functions.php:
add_filter('loop_shop_per_page', create_function('$cols', 'return 30;'));
Количество товара в колонке Вашего магазина.
Можете изменить на нужное Вам значение (в коде цифра 35). Код добавляем как обычно в functions.php:
add_filter('loop_shop_columns', 'loop_columns'); if (!function_exists('loop_columns')) { function loop_columns() { return 35; } }
Изменяет количество up-sells товаров.
Up-sells — это товары или продукты, которые вы рекомендуете вместо просматриваемых клиентом товаров Пример: более выгодные и недорогие либо более качественные и функциональные, но дорогие варианты.
Цифры в коде означают число колонок и число товара в колонках. Добавьте код в функции темы как обычно:
remove_action( 'woocommerce_after_single_product', 'woocommerce_upsell_display'); add_action( 'woocommerce_after_single_product', 'woocommerce_output_upsells', 20); if (!function_exists('woocommerce_output_upsells')) { function woocommerce_output_upsells() { woocommerce_upsell_display(4,4); // Показать 4 товара в 4 колонки } }
Изменяем количество сопутствующих товаров.
Сопутствующие товары отображаются в карточке товара внизу страницы под основным товаром. По умолчанию отображается 2 сопутствующих товара. Изменим число сопутствующих товаров. Цифры задают число товаров и число колонок. Код вносим в файл functions.php:
function woocommerce_output_related_products() { woocommerce_related_products(4,4); // Показать 4 товара а 4 колонки }
Изменение полей оформления заказа в WooCommerce.
Я рекомендую изменять набор полей для оформления заказа с помощью плагина Saphali Lite. Но это можно сделать с помощью правки функций темы. Ниже пример кода, который удалит указанные поля:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { /*Убрали ненужные поля*/ unset($fields['billing']['billing_company']); unset($fields['billing']['billing_country']); unset($fields['billing']['billing_address_2']); unset($fields['billing']['billing_state']); return $fields; } add_filter('woocommerce_billing_fields', 'custom_woocommerce_billing_fields'); function custom_woocommerce_billing_fields( $fields ) { $fields['billing_address_1']['class'] = array( 'form-row-wide' ); /*Поле адреса шире*/ return $fields; }
Скрыть отображение количества товаров в категории.
В functions.php темы оформления нужно добавить такой код:
add_filter( 'woocommerce_subcategory_count_html', 'jk_hide_category_count' ); function jk_hide_category_count() { }
Изменяем обертки (wrapper) для нашего шаблона на страницах интернет-магазина.
В принципе для WooCommerce-совместимых шаблонов это не требуется. Если хотите проэкспериментировать, код такой:
remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10); // Убрали remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10); add_action('woocommerce_before_main_content', create_function('', 'echo "<div id=\"contentwrapper\"><div id= \"content\">";'), 10); function divandsidebar_function(){ echo "</div></div>"; get_sidebar('left'); // после обертки вызвали sidebar-left.php } add_action('woocommerce_after_main_content', 'divandsidebar_function', 10); // Свои поставили
Убираем кнопку «В корзину» на основной витрине магазина.
Код как обычно добавляем в функции темы:
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
Меняем местами краткое описание товара и цену.
Если Вы хотите поменять местами краткое описание и цену, добавьте такой код в functions.php:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20); add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 20); add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 10); function HB_woocommerce_template_dimensions(){ //Добавим функцию вызова панельки с размерами и весом global $woocommerce, $post, $product; $product->list_attributes(); } add_action( 'woocommerce_single_product_summary', 'HB_woocommerce_template_dimensions', 15); //Поставим панельку после краткого описания
Убираем хлебные крошки на страницах магазина WooCommerce и на странице карточки товара.
Если Вам не нравятся стандартные хлебные крошки WooCommerce или вместо них у Вас есть специальный плагин, выводящий Breadcrumbs, то добавться в functions.php такой код:
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0);
Убираем вкладку «Дополнительное описание» товаров в магазине WooCommerce:
Если Вам не нужно дополнительное описание, то убрать его просто. Добавим в функции темы код:
remove_action( 'woocommerce_product_tabs', 'woocommerce_product_attributes_tab', 20 ); remove_action( 'woocommerce_product_tab_panels', 'woocommerce_product_attributes_panel', 20 );
Перенаправление (редирект) клиента после авторизации в магазине на нужную Вам страницу.
Чтобы после входа в личный кабинет клиент переходил на ту страницу, которую Вы хотите задать (адрес страницы в коде /checkout замените на нужный), добавьте такой код в функции темы:
add_filter('woocommerce_login_widget_redirect', 'custom_login_redirect'); function custom_login_redirect( $redirect_to ) { $redirect_to = '/checkout'; }
Меняем местами постраничную навигацию и сортировку.
Поменяем местами постраничную навигацию (список страниц внизу) и блок сортировки (вверху — по убыванию/возрастанию цены и т.д.). Код такой:
remove_action( 'woocommerce_pagination', 'woocommerce_pagination', 10 ); remove_action( 'woocommerce_pagination', 'woocommerce_catalog_ordering', 20 ); function pre_woocommerce_pagination(){ //Добавим текст перед списком echo '<span>Сортировка: </span>'; } add_action( 'woocommerce_pagination', 'pre_woocommerce_pagination', 5 ); add_action( 'woocommerce_pagination', 'woocommerce_catalog_ordering', 10 ); add_action( 'woocommerce_pagination', 'woocommerce_pagination', 20 );
Добавляем навигацию и сортировку в начало страницы.
Код вносим как всегда в functions.php:
add_action( 'woocommerce_before_shop_loop', 'pre_woocommerce_pagination', 1 ); add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 2 ); add_action( 'woocommerce_before_shop_loop', 'woocommerce_pagination', 3 );
Делаем поля в форме заказа WooCommerce необязательными.
add_filter( 'woocommerce_checkout_fields' , 'no_required_checkout_fields' ); function no_required_checkout_fields( $fields ) { $fields['billing']['billing_last_name']['required'] = false; $fields['billing']['billing_address_1']['required'] = false; $fields['billing']['billing_city']['required'] = false; $fields['billing']['billing_postcode']['required'] = false; return $fields; }
Ставим кнопки «Продолжить покупки» и «Оформить заказ» вниз страницы корзины WooCommerce.
Не забудьте изменить ссылки «ваш_сайт.ru» на правильный адрес вашего сайта.
function cart_more_buttons() { echo '<a href="http://ваш_сайт.ru/shop/"> ← Продолжить покупки</a><a href="http://ваш_сайт.ru/checkout/">Оформить заказ →</a>'; } add_action ('woocommerce_after_cart_totals', 'cart_more_buttons', 5);
Добавляем конпку «Продолжить покупки» на страницу оформления заказа.
Не забудьте изменить ссылки «ваш_сайт.ru» на правильный адрес вашего сайта.
function checkout_more_buttons() { echo '<a href="http://ваш_сайт.ru/shop/"> ← Продолжить покупки</a>'; } add_action ('woocommerce_review_order_before_submit', 'checkout_more_buttons', 5);
Мы рассмотрели основные параметры тонкой настройки магазина на WooCommerce с помощью валидного способа правки функций темы (файла functions.php).
No comments:
Post a Comment