+7(982) 597-7179

Woocommerce сниппеты

Время на прочтение: 3 мин.

В данной статье мы рассмотри различные сниппеты для Woocommerce . Woocommerce — это лучший плагин для интернет-магазинов на WordPress. Данная статья будет пополняться, поэтому рекомендую добавить ее в закладки. Так же предлагайте свои сниппеты или более лучшие решения.

Работа с категориями

//отображать категории в которых нет товаров
add_filter( 'woocommerce_product_subcategories_hide_empty', function() { return false; }, 10, 1 );

/*вывести описание категорий в списке категорий*/
add_action( 'woocommerce_after_subcategory_title', 'custom_add_product_description', 12);
function custom_add_product_description ($category) {
    $cat_id        =    $category->term_id;
    $prod_term    =    get_term($cat_id,'product_cat');
    $description=    $prod_term->description;

    $description = strip_tags($description);
    $description = substr($description, 0, 250);
    $description = rtrim($description, "!,.-");
    $description = substr($description, 0, strrpos($description, ' '));
    echo '
<div class="woocommerce-loop-category__description">'.$description."… ".'</div>
'; } /*вывод описание товара в самой категории*/ add_action( 'woocommerce_after_shop_loop_item_title', 'my_add_short_description', 9 ); function my_add_short_description() { echo '
<div class="description-tovar">' , the_excerpt() ,'</div>
'; }

Работа с атрибутами

/*выводит определенные атрибуты  в списке товаров*/
add_action( 'woocommerce_after_shop_loop_item', 'custom_add_product_atribut', 12);
function custom_add_product_atribut ($category) {

    global $product;
    if($product->get_attribute('long') == true)
    {echo '<div class="atrebut">Длина стрелы '.$product->get_attribute('long')."</div>";}
}

 
/*Как в карточке товара woocommerce вывести отображение строки в наличии/не в наличии?
В шаблоне карточки надо добавить скприт. У себя на сайте разместил в шаблоне content-single-product.php*/
if (get_post_meta(get_the_ID(), '_stock_status', true) == 'outofstock') {
  echo '<div class="outofstock">Нет в наличии</div>';
} else {
  echo '<div class="stock">В наличии</div>';
}


 /*
свои статусы остатка*/
function add_custom_stock_type() {
    ?>
    <script type="text/javascript">
    jQuery(function(){
        jQuery('._stock_status_field').not('.custom-stock-status').remove();
    });
    </script>
    <?php  

    woocommerce_wp_select( array( 'id' => '_stock_status', 'wrapper_class' => 'hide_if_variable custom-stock-status', 'label' => __( 'Stock status', 'woocommerce' ), 'options' => array(
        'instock' => __( 'In stock', 'woocommerce' ),
        'outofstock' => __( 'Out of stock', 'woocommerce' ),
        'onrequest' => __( 'под заказ', 'woocommerce' ), // The new option !!!
    ), 'desc_tip' => true, 'description' => __( 'Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce' ) ) );
}
add_action('woocommerce_product_options_stock_status', 'add_custom_stock_type');
function save_custom_stock_status( $product_id ) {
    update_post_meta( $product_id, '_stock_status', wc_clean( $_POST['_stock_status'] ) );
}
add_action('woocommerce_process_product_meta', 'save_custom_stock_status',99,1);

function woocommerce_get_custom_availability( $data, $product ) {
    switch( $product->stock_status ) {
        case 'instock':
            $data = array( 'availability' => __( 'In stock', 'woocommerce' ), 'class' => 'in-stock' );
        break;
        case 'outofstock':
            $data = array( 'availability' => __( 'Out of stock', 'woocommerce' ), 'class' => 'out-of-stock' );
        break;
        case 'onrequest':
            $data = array( 'availability' => __( 'под заказ', 'woocommerce' ), 'class' => 'on-request' );
        break;
    }
    return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 10, 2);

Похожие товары

/*количество похожих товаров*/
add_filter( 'woocommerce_output_related_products_args', 'jk_related_products_args' );
function jk_related_products_args( $args ) {

    $args['posts_per_page'] = 3; // количество "Похожих товаров"
    $args['columns'] = 1; // количество колонок
    return $args;
}

Хлебные крошки

/*Изменяем Текст ‘Главная’ в хлебных крошках*/
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_change_breadcrumb_home_text' );
function jk_change_breadcrumb_home_text( $defaults ) {
// Изменяем текст для главной страницы с 'Главная' на 'Аппартаменты'
$defaults['home'] = 'Аппартаменты';
return $defaults;
}


/*Изменяем Разделитель В Хлебных Крошках*/
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_change_breadcrumb_delimiter' );
function jk_change_breadcrumb_delimiter( $defaults ) {
// Изменяем разделитель хлебных крошек с '/' на '>'
$defaults['delimiter'] = ' > ';
return $defaults;
}

/*Меняем Всё в хлебных крошках*/
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_woocommerce_breadcrumbs' );
function jk_woocommerce_breadcrumbs() {
return array(
'delimiter' => ' / ',
'wrap_before' => '<nav class="woocommerce-breadcrumb" itemprop="breadcrumb">',
'wrap_after' => '</nav>',
'before' => '',
'after' => '',
'home' => _x( 'Аппартаменты', 'breadcrumb', 'woocommerce' ),
);
}

/*Изменяем Ссылку На Главную Страницу На Произвольную Ссылку*/
add_filter( 'woocommerce_breadcrumb_home_url', 'woo_custom_breadrumb_home_url' );
function woo_custom_breadrumb_home_url() {
return 'http://example.com';
}


/*Убираем Хлебные Крошки*/
add_action( 'init', 'jk_remove_wc_breadcrumbs' );
function jk_remove_wc_breadcrumbs() {
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
}

Работа с корзиной

/*меняем добавить в корзину на купить*/
function remove_loop_button(){
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
}
add_action('init','remove_loop_button');
add_action('woocommerce_after_shop_loop_item','replace_add_to_cart');
function replace_add_to_cart() {
    global $product;
   // $link = $product->get_permalink();
    $iid = $product->get_id();
    echo do_shortcode('<a class="button addtocartbutton" href="?add-to-cart='.$iid.'">Купить</a>');
}

Работа с карточкой товара

/*Добавление своих состояний товара*/
function add_custom_stock_type() {
    ?>
    <script type="text/javascript">
    jQuery(function(){
        jQuery('._stock_status_field').not('.custom-stock-status').remove();
    });
    </script>
    <?php

    woocommerce_wp_select( array( 'id' => '_stock_status', 'wrapper_class' => 'hide_if_variable custom-stock-status', 'label' => __( 'Stock status', 'woocommerce' ), 'options' => array(
        'instock' =>        __( 'В наличии', 'woocommerce' ),
        'outofstock1' =>    __( 'Под заказ', 'woocommerce' ),
        'onrequest' =>      __( 'Снят с производства', 'woocommerce' ), // The new option !!!
    ), 'desc_tip' => true, 'description' => __( 'Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce' ) ) );
}
add_action('woocommerce_product_options_stock_status', 'add_custom_stock_type');
function save_custom_stock_status( $product_id ) {
    update_post_meta( $product_id, '_stock_status', wc_clean( $_POST['_stock_status'] ) );
}
add_action('woocommerce_process_product_meta', 'save_custom_stock_status',99,1);

function woocommerce_get_custom_availability( $data, $product ) {
    switch( $product->stock_status ) {
        case 'instock':
            $data = array( 'availability' => __( 'В наличии', 'woocommerce' ), 'class' => 'in-stock' );
        break;
        case 'outofstock1':
            $data = array( 'availability' => __( 'Под заказ', 'woocommerce' ), 'class' => 'out-of-stock' );
        break;
        case 'onrequest':
            $data = array( 'availability' => __( 'Снят с производства', 'woocommerce' ), 'class' => 'on-request' );
        break;
    }
    return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 10, 2);

Другие сниппеты

/*поддержка вукоммерс в теме*/
add_action( 'after_setup_theme', 'woocommerce_support' );
function woocommerce_support() {
    add_theme_support( 'woocommerce' );
}

/*Замена значка на рубля на руб.*/
function change_rub_symbol() {
// Just returns rubles 
    return 'руб.';
}
add_filter( 'woocommerce_currency_symbol', 'change_rub_symbol', 50 );

/*удалить выпадающий список «Сортировать по...»*/
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );

Читайте также:

Приглашаем поучаствовать в обсуждении статьи:

Комментариев 0