Пачка полезных сниппетов для WooCommerce. Часть 5

Отображаем артикул на странице корзины в Woocommmerce

Добавление сниппета в файл functions.php вашей темы WordPress выведет артикул на странице корзины в вашем магазине:

add_filter( 'woocommerce_cart_item_name', 'add_sku_in_cart', 20, 3);

function add_sku_in_cart( $title, $values, $cart_item_key ) {<div style="float:right;width:350px;margin:0 0 10px 15px;">
<div id="yandex_rtb_R-A-187781-2"></div>
</div>
    $sku = $values['data']-&gt;get_sku();
    return $sku ? $title . sprintf(&quot; (Артикул: %s)&quot;, $sku) : $title;
}

Добавляем имя пользователя, сделавшего заказа, в тему email-уведомления

Добавление сниппета в файл functions.php вашей темы WordPress выведет в теме уведомления о новом заказе для администратора имя пользователя, сделавшего заказ.
Например: Тема: Новый заказ от Devise Group — Номер заказа #444

add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);

function change_admin_email_subject( $subject, $order ) {
global $woocommerce;

$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

$subject = sprintf( 'Новый заказ от (# %s) от %s %s - %s', $order->id, $order->billing_first_name, $order->billing_last_name, $order->order_date );

return $subject;
}

Дополнительные товары на странице/в ряду

Добавление сниппета в файл functions.php вашей темы WordPress выведет сопутствующие товары (upsell) на страницу в 3 строки.

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 строки
    }
}

Добавить произвольное поле на вкладку «вариативный товар»

Добавление сниппета в файл functions.php вашей темы WordPress выведет произвольное поле на вкладку Вариативный товар

//Выводим поля
add_action( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 );
//JS для добавления полей для новых вариаций
add_action( 'woocommerce_product_after_variable_attributes_js', 'variable_fields_js' );
//Сохраняем вариативные поля
add_action( 'woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1 );
function variable_fields( $loop, $variation_data ) {
?>  
    <tr>
        <td>
            <div>
                    <label></label>
                    <input type="text" size="5" name="my_custom_field[]" value=""/>
            </div>
        </td>
    </tr>

<tr>
        <td>
            <div>
                    <label></label>
                  
            </div>
        </td>
    </tr>
<?php
}
function variable_fields_process( $post_id ) {
    if (isset( $_POST['variable_sku'] ) ) :
        $variable_sku = $_POST['variable_sku'];
        $variable_post_id = $_POST['variable_post_id'];
        $variable_custom_field = $_POST['my_custom_field'];
        for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
            $variation_id = (int) $variable_post_id[$i];
            if ( isset( $variable_custom_field[$i] ) ) {
                update_post_meta( $variation_id, '_my_custom_field', stripslashes( $variable_custom_field[$i] ) );
            }
        endfor;
    endif;
}

Выводим «Товар уже в корзине» вместо кнопки «Добавить в корзину»

Добавление сниппета в файл functions.php вашей темы WordPress позволяет вывести «Товар уже в корзине» вместо кнопки «Добавить в корзину», а также изменить текст «Добавить в корзину» на странице товара.

/**
* Изменяем текст добавления в корзину на странице товара
*/
add_filter('single_add_to_cart_text', 'woo_custom_cart_button_text');

function woo_custom_cart_button_text() {

    global $woocommerce;
  
    foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];
  
        if( get_the_ID() == $_product->id ) {
            return __('Уже в корзине - Добавить снова?', 'woocommerce');
        }
    }
  
    return __('Добавить в корзину', 'woocommerce');
}

/**
* Изменяем текст добавления в корзину на странице архивов товара
*/
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );

function woo_archive_custom_cart_button_text() {

    global $woocommerce;
  
    foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];
  
        if( get_the_ID() == $_product->id ) {
            return __('Уже в корзине', 'woocommerce');
        }
    }
  
    return __('Добавить в корзину', 'woocommerce');
}

Изменяем заголовок главной страницы магазина

Добавление сниппета в файл functions.php вашей темы WordPress позволит вам переименовать вашу главную страницу с Магазин на любое другое.

add_filter( 'woocommerce_page_title', 'woo_shop_page_title');

function woo_shop_page_title( $page_title ) {
  
    if( 'Магазин' == $page_title) {
        return "Новый заголовок страницы";
    }
}

По всем вопросам и отзывам просьба писать в комментарии ниже.

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

VN:F [1.9.22_1171]
Rating: 5.0/5 (6 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Игорь

    Подскажите, а есть ли какой-то способ привязать все цены в магазине к доллару, и, например, я задаю где-то курс, и цены соответственно все меняются. Желательно чтобы было округление до, например 100 рублей.

    Пример, у меня стоит цена товара (36 долларов и задан курс доллара 30 р) на сайте выводится в рублях 1100 (т.к. 36*30=1080, округление до 1100), доллар поменялся, например на 34 рубля, я его задал, цена на сайте должна изменится на 1200 (т.к. 36*34=1224, округление до 1200)?

    • http://oppozit.ru/ SHTRLZ

      могут возникнуть сложности с оформленными накладными. в них тогда цены тоже уползут.

    • http://web-devise.com/ ADv

      Способ есть. Один из платных плагинов на CodeCanyon. К сожалению, названия не помню.

  • Саня

    Здравствуйте! Скажите пожалуйста, как можно переименовать слова артикул и категория на свои слова? Парусь не могу сделать, нигде не могу найти эти слова(((

    • ADv

      Здравствуйте. Можно: 1) установив плагин для кастомной локализации; 2) поправив файлы шаблона темы; 3) изменив файл локализации WooCommerce.

  • Сергей

    Доброе день! Подскажите, как над/под стандартной кнопкой «Добавить в корзину» на странице магазина ( и товара ), добавить к определенному товару еще одну кнопку «Ссылка» ( функция кнопки — простая ссылка на нужный url ) . Смысл — выбор между «добавить в корзину» и «прочитать условия» ( на отдельной странице) например.

Scroll To Top