Модификация woocommerce

Для добавления рубля добавьте строки ниже в файл 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 в обход изменения файлов ядра

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

// Количество товара на страницу
add_filter('loop_shop_per_page', create_function('$cols', 'return 30;'));

// Количество товара в колонке (заведомо превышает количество на страницу - для резины)
add_filter('loop_shop_columns', 'loop_columns');
if (!function_exists('loop_columns')) {
        function loop_columns() {
                return 35;
        }
}

// Количество демонстрируемого товара 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)
function woocommerce_output_related_products() {
woocommerce_related_products(4,4); // Показать 4 товара а 4 колонки
}

// Редактирование полей на странице оформления заказа
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;
}

// Устанавливаем правильные обертки начала и конца страницы используемые в своем шаблоне
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);

//Меняем местами кратакое описание и цену
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); //Поставим панельку после краткого описания

//Убрали хлебные крошки
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0);

//Убрали закладку "Дополнительное описание"
remove_action( 'woocommerce_product_tabs', 'woocommerce_product_attributes_tab', 20 );
remove_action( 'woocommerce_product_tab_panels', 'woocommerce_product_attributes_panel', 20 );

// Редирект клиента после авторизации на произвольную страницу
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 class="sort-pre">Сортировка: </span>';
}
add_action( 'woocommerce_pagination', 'pre_woocommerce_pagination', 5 );
add_action( 'woocommerce_pagination', 'woocommerce_catalog_ordering', 10 );
add_action( 'woocommerce_pagination', 'woocommerce_pagination', 20 );

// Добавим панель навигации и сортировку в начало страницы
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 );

//Снимаем необязательные поля
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;
}

//Добавим кнопки "Продолжить покупки" "Оформить заказ" внизу страницы корзины
function cart_more_buttons() {
        echo '<a href="http://happybirds.ru/shop/" class="checkout-button button second-in-cart cont"> ← Продолжить покупки</a><a href="http://happybirds.ru/checkout/" class="checkout-button button second-in-cart">Оформить заказ →</a>';
        }
add_action ('woocommerce_after_cart_totals', 'cart_more_buttons', 5);

//Добавим кнопкe "Продолжить покупки" на странице оформления заказа
function checkout_more_buttons() {
        echo '<a href="http://happybirds.ru/shop/" class="checkout-button button second-in-cart cont"> ← Продолжить покупки</a>';
        }
add_action ('woocommerce_review_order_before_submit', 'checkout_more_buttons', 5);

English

10 мыслей о “Модификация woocommerce”

  1. Вставил в код темы в function.php — обновил файл и поймал ошибку каких то двух строк. Совсем непонятно. Попробовал тоже самое сделать через ChildTheme — вообще все обвалилось. В чем может быть проблема?

    У вас во второй части кода указано название магазина (Счастливая Птичка), по логике вещей данный код работает на магазине или все таки есть отличия?

    Как бы себе применить подобный код только под товары которые нужно скачивать а не отправлять почтой?

    Буду длагодарен за любую помощь.

      1. Попробовал добавить, но выдало ошибку в нескольких строках.

        Мне необходима некоторая помощь в настройке woocommerce, если у вас есть время и вы оказываете подобные услуги готов обсудить.

          1. Пожалуйста удали мой имейл из сообщения. Спасибо.

  2. Очень полезная статья.
    Но у меня встал очень интересный вопрос можно ли настроить редирект не в корзину после добавления товара, а на ту страницу которую укажешь и чтобы бы для каждого товара можно было ставить свою страницу

  3. Вы бы могли мне помочь? Всё перерыл не могу добавить кнопку Добавить в корзину на странице товара, в плагине woocommerce. Сайт написал в третье поле.

  4. друзья, понять не могу, может ищу не там.

    вот есть сайт. там woocommerce плагин. не пойму, как одному товару выставить разную цену. к примеру — красный айпон стоит 1000 рублей, зелёный 1200 а цвета детской неожиданности — 700.

    не пойму куда клацнуть, объясните, кто знает а?

    спасибо 🙂

Добавить комментарий для Анатолий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.