menu_order
==========
Шорткоды:
1 | [products ids="12,379,7" orderby="menu_order"] |
Количество товаров на странице:
1 | add_filter( 'loop_shop_per_page', function ( $cols ) {return 9;}, 20 ); |
Количество колонок на странице:
1 | add_filter('loop_shop_columns',function($col){return 3;}); |
Вывод товаров указанной категории:
1 | [product_category category="detskie-molochnye-smesi" orderby="price" order="asc" per_page="400" columns="3"] |
Вывод одного товара:
1 | [product id="555"] |
Убрать табы:
1 2 3 4 5 6 7 8 9 10 | add_filter( 'woocommerce_product_tabs', 'remove_woocommerce_product_tabs', 100 ); function remove_woocommerce_product_tabs( $tabs ) { unset( $tabs['description'] ); // удалить вкладку описание unset( $tabs['additional_information'] ); // удалить вкладку свойств unset( $tabs['reviews'] ); // удалить вкладку отзывов return $tabs; } |
Убрать дублирование названия табов:
1 2 3 4 5 6 7 8 9 10 | add_filter('woocommerce_product_description_heading', 'my_product_description_heading',10,1); function my_product_description_heading($description) { $description = ''; return $description; } add_filter('woocommerce_product_additional_information_heading', 'my_product_additional_information_heading',10,1); function my_product_additional_information_heading($additional_information) { $additional_information = ''; return $additional_information; } |
Убрать количество товаров в категории:
1 2 | add_filter( 'woocommerce_subcategory_count_html', 'woo_remove_category_products_count' ); function woo_remove_category_products_count() {return;} |
Проверка категории woocommerce:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function my_woocommerce_single_product_summary() { global $product; // id категорий для проверки $category_id = array(25,46); // получаем категории товаров $categories = get_the_terms( $product->id, 'product_cat' ); // проверяем принадлежность товара к вышеуказанным категориям по id $product_in_category = false; foreach ($categories as $item) { if (in_array((int)$item->term_id, $category_id)) { $product_in_category = true; break; } } if ($product_in_category) { echo 'Товар входит в категории'; } else echo 'Товар не входит в категории'; } add_filter( 'woocommerce_single_product_summary', 'my_woocommerce_single_product_summary'); |
Добавить способ оплаты во ВСЕ письма:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php // Добавьте следующий код в файл functions.php темы для того, чтобы добавить способ оплаты во ВСЕ письма add_action( 'woocommerce_email_after_order_table', 'wc_add_payment_type_to_emails', 15, 2 ); function wc_add_payment_type_to_emails( $order, $is_admin_email ) { echo '<p><strong>Способ оплаты:</strong> ' . $order->payment_method_title . '</p>'; } // Добавьте следующий код в файл functions.php темы для того, чтобы добавить способ оплаты в письма ТОЛЬКО для АДМИНИСТРАТОРОВ add_action( 'woocommerce_email_after_order_table', 'wc_add_payment_type_to_admin_emails', 15, 2 ); function wc_add_payment_type_to_admin_emails( $order, $is_admin_email ) { if ( $is_admin_email ) { echo '<p><strong>Способ оплаты:</strong> ' . $order->payment_method_title . '</p>'; } } ?> |
Все продукты с тегом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php global $post; $tmp_post = $post; $args = array( 'product_tag' => 'day', 'post_type' => 'product' );//Все продукты с тегом day $myposts = get_posts( $args ); foreach( $myposts as $post ){ setup_postdata($post); ?> <?php $product = get_product(); ?>//Бывает без этой строки не работает <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a> <div class="fll-day"> <p>Цена <span><?php echo $product->get_price(); ?></span> руб. <a href="<?php the_permalink(); ?>">Подробнее...</a></p> </div> <?php } $post = $tmp_post; ?> |
Вывод содержимого корзины:
1 2 3 4 5 6 | <div class="cart-content"> <p class="cart-header">В корзине:</p> <p>Товаров: <span><?php echo WC()->cart->get_cart_contents_count(); ?></span> шт.</p> <p>На сумму: <span><?php echo WC()->cart->get_cart_subtotal(); ?></span></p> <a href="http://bla.bla/cart/" class="cart-checkout">Оформить заказ</a> </div> |
Удалить цену:
1 2 | remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' ); |
Перенос из хука в хук:
1 2 | remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); add_action( 'woocommerce_before_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); |
Перенос описания категории на странице категорий:
1 2 3 4 | // удаляем описание категории на странице категорий remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 ); // выводим описание категории под товарами add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_description', 100 ); |
Переименование:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' ); function woo_archive_custom_cart_button_text() { return __( 'В корзину', 'woocommerce' ); } add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' ); function woo_custom_cart_button_text() { return __( 'В корзину', 'woocommerce' ); } add_filter( 'woocommerce_sale_flash', 'wc_custom_replace_sale_text' ); function wc_custom_replace_sale_text() { return __( '<span class="onsale">Акция</span>', 'woocommerce' ); } |
1 2 3 4 5 6 7 8 9 | add_filter('gettext', 'translate_text'); add_filter('ngettext', 'translate_text'); function translate_text($translated) { $translated = str_ireplace('Выбрать опцию', 'Здесь ваш вариант', $translated); $translated = str_ireplace('Выбрать опции', 'Здесь ваш вариант', $translated); return $translated; } |
1 2 3 4 5 6 7 8 9 10 11 12 | // замена стандартных текстов function rog_shop_strings( $translated_text, $text, $domain ) { if( 'woocommerce' === $domain ) { switch ( $translated_text ) { case 'Добавить в корзину' : $translated_text = 'В корзину'; break; } } return $translated_text; } add_filter( 'gettext', 'rog_shop_strings', 20, 3 ); |
Изменить количество related_products (сопутствующие товары):
1 2 3 4 5 6 | 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; } |
Удалить related_products (сопутствующие товары):
1 | remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); |
Удалить название товара:
1 | remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 ); |
Удалить "хлебные крошки":
1 2 3 4 | add_action( 'init', 'jk_remove_wc_breadcrumbs' ); function jk_remove_wc_breadcrumbs() { remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); } |
Удалить "Отображается ххх товаров":
1 | remove_action ( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); |
Удалить сортировку:
1 | remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); |
Сортировка товаров, убрать лишние:
1 2 3 4 5 6 7 | function custom_woocommerce_catalog_orderby( $orderby ) { unset($orderby["popularity"]); unset($orderby["rating"]); unset($orderby["date"]); return $orderby; } add_filter( "woocommerce_catalog_orderby", "custom_woocommerce_catalog_orderby", 20 ); |
Убрать колонку "Свойства":
1 | add_filter('woocommerce_enable_order_notes_field', '__return_false'); |
Меняем вкладку "Дополнительная информация" на "Технические характеристики" на странице товара:
1 2 3 4 5 6 7 8 | add_filter ( 'woocommerce_product_additional_information_tab_title', 'custom_product_additional_information_tab_title' ) ; function custom_product_additional_information_tab_title() { return 'Технические характеристики'; // Change Me! } add_filter ( 'woocommerce_product_additional_information_heading', 'custom_product_additional_information_heading' ) ; function custom_product_additional_information_heading() { return 'Технические характеристики'; // Change Me! } |
Апселы:
1 2 | $upsells = $product->get_upsells(); // дальше - выводить, как захочется |
Убрать (Бесплатно!) в доставке (не работает с Сафали):
1 2 3 4 5 | add_filter( 'woocommerce_cart_shipping_method_full_label', 'remove_local_pickup_free_label', 10, 2 ); function remove_local_pickup_free_label($full_label, $method){ $full_label = str_replace("(Бесплатно!)","",$full_label); return $full_label; } |
Если установлен Сафали убрать скобки и Free в коде:
в includes/wc-cart-functions.php:287
$label .= ' (' . __( 'Free', 'woocommerce' ) . ')';
Изменить поля формы заказа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); // Our hooked in function - $fields is passed via the filter! function custom_override_checkout_fields( $fields ) { unset($fields['billing']['billing_company']); // удаляем Название компании unset($fields['billing']['billing_postcode']); // удаляем Индекс unset($fields['billing']['billing_city']); // удаляем Населённый пункт unset($fields['billing']['billing_country']); // удаляем поле Страна unset($fields['billing']['billing_address_2']); // удаляем второе поле Адрес $fields['billing']['billing_address_1']['label'] = 'Номер отделения Новой Почты'; // меняем Адрес $fields['billing']['billing_address_1']['placeholder'] = ' '; // в поле Адрес оставляем пустым return $fields; } // Делаем поля необязательными add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' ); // Наша перехваченная функция - $fields проходит через фильтр function custom_override_default_address_fields( $address_fields ) { $address_fields['address_1']['required'] = false; // Адрес $address_fields['postcode']['required'] = false; // Индекс $address_fields['city']['required'] = false; // Населённый пункт $address_fields['country']['required'] = false; // страна return $address_fields; } |
Подключение lightbox в woocommerce 3.0:
1 2 3 4 5 6 | function вашатема_setup() { add_theme_support( 'wc-product-gallery-zoom' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); } add_action( 'after_setup_theme', 'вашатема_setup' ); |
Всегда выводить звёзды рейтинга (даже если оценок нет):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | add_action( 'woocommerce_after_shop_loop_item_title', 'empty_stars', 5 ); function empty_stars() { global $product; if ( get_option( 'woocommerce_enable_review_rating' ) === 'no' || $product->post->comment_status === 'closed' ) { return; } else { $rating_count = $product->get_rating_count(); $review_count = $product->get_review_count(); $average = $product->get_average_rating(); if ( $rating_count === 0 ) : ?> <div class="woocommerce-product-rating" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> <div class="star-rating" title="<?php printf( __( 'Rated %s out of 5', 'woocommerce' ), $average ); ?>"> <span style="width:<?php echo ( ( $average / 5 ) * 100 ); ?>%"> <strong itemprop="ratingValue" class="rating"><?php echo esc_html( $average ); ?></strong> <?php printf( __( 'out of %s5%s', 'woocommerce' ), '<span itemprop="bestRating">', '</span>' ); ?> <?php printf( _n( 'based on %s customer rating', 'based on %s customer ratings', $rating_count, 'woocommerce' ), '<span itemprop="ratingCount" class="rating">' . $rating_count . '</span>' ); ?> </span> </div> <?php if ( comments_open() ) : ?><a href="#reviews" class="woocommerce-review-link" rel="nofollow"> <?php esc_html_e( 'There are no reviews yet', 'woocommerce' ); ?></a><?php endif ?> </div> <?php endif; } } |
Режим каталога:
1 2 3 4 | remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 ); remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 ); |
default_checked
1 | add_filter( 'woocommerce_create_account_default_checked', function( $isChecked) { return true; } ); |
Купить в 1 клик
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function lf_arhive() { global $product; if ( !$product->is_in_stock() or !$product->get_price_html()) { } else{ $id = $product->get_id(); ?> <a href="#contact_form_pop<?php echo $id ?>" class="fancybox lf-klik">Купить в 1 клик</a> <div style="display:none" class="fancybox-hidden"> <div id="contact_form_pop<?php echo $id ?>"> <?php echo do_shortcode('[contact-form-7 id="97" title="Купить в один клик"]'); ?> </div> </div> <?php } } add_action( 'woocommerce_after_shop_loop_item', 'lf_arhive', 15 ); function lf_single() { global $product; if ( !$product->is_in_stock() or !$product->get_price_html()) { } else{ ?> <a href="#contact_form_pop" class="fancybox lf-klik">Купить в 1 клик</a> <div style="display:none" class="fancybox-hidden"> <div id="contact_form_pop"> <?php echo do_shortcode('[contact-form-7 id="97" title="Купить в один клик"]'); ?> </div> </div> <?php } } add_action( 'woocommerce_single_product_summary', 'lf_single', 35 ); |
Изменить хлебные крошки
1 2 3 4 5 6 7 8 9 10 11 | add_filter( 'woocommerce_breadcrumb_defaults', 'lf_woocommerce_breadcrumbs' ); function lf_woocommerce_breadcrumbs() { return array( 'delimiter' => ' / ', 'wrap_before' => '<nav class="woocommerce-breadcrumb" itemprop="breadcrumb">', 'wrap_after' => '</nav>', 'before' => '', 'after' => '', 'home' => _x( 'Магазин', 'breadcrumb', 'woocommerce' ), ); } |
Маска для номера телефона, в functions.php вставить код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // WC Добавить маску ввода на базе http://digitalbush.com/projects/masked-input-plugin add_action('wp_enqueue_scripts', 'my_maskedinput'); function my_maskedinput() { // подгружаем скрипты только на страницы оформления заказа if (is_checkout()) { // загружаем скрипт, который находиться в ПапкаТемы\assets\js\jquery.maskedinput.min.js wp_enqueue_script('maskedinput', get_template_directory_uri() . '/assets/js/jquery.maskedinput.min.js', array('jquery')); add_action( 'wp_footer', 'masked_script', 999); } } function masked_script() { if ( wp_script_is( 'jquery', 'done' ) ) { ?> <script type="text/javascript"> jQuery( function( $ ) { $("#billing_phone").mask("(999) 99-99-999"); }); </script> <?php } } |
1 2 3 4 5 6 7 | /* jQuery Masked Input Plugin Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com) Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) Version: 1.4.1 */ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})}); |
Изменить выводимый размер изображения товара
1 2 3 4 5 6 7 8 9 | add_filter( 'single_product_archive_thumbnail_size', 'true_product_archive_size' ); function true_product_archive_size( $size ) { return 'full'; } add_filter( 'subcategory_archive_thumbnail_size', 'true_category_archive_size' ); function true_category_archive_size( $size ) { return 'full'; } |
Изменить тег товаров в каталоге
1 2 3 4 | remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 ); add_action( 'woocommerce_shop_loop_item_title', 'lf_woocommerce_template_loop_product_title', 10 ); function lf_woocommerce_template_loop_product_title() { echo '<p class="woocommerce-loop-product__title">' . get_the_title() . '</p>'; } |
...