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

Как добавить .html в постоянные ссылки Woocommerce

Иногда может возникнуть необходимость добавить суффикс .html ко всем ссылкам магазина. Часть задачи можно реализовать через «Настройки — Постоянные ссылки», но для товаров и категорий вам нужно будет добавить соответствующий код в файл functions.php темы.

Для товаров:

function devise_permastruct_html( $post_type, $args ) {
    if ( $post_type === 'product' )
        add_permastruct( $post_type, "{$args->rewrite['slug']}/%$post_type%.html", $args->rewrite );
}

add_action( 'registered_post_type', 'devise_permastruct_html', 10, 2 );

Для товарных категорий:

function devise_category_permastruct_html( $taxonomy, $object_type, $args ) {
    if ( $taxonomy === 'product_cat' )
        add_permastruct( $taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%.html", $args['rewrite'] );
}

add_action( 'registered_taxonomy', 'devise_category_permastruct_html', 10, 3 );

Как вывести комбинацию атрибутов вариаций товара в наличии

Ниже представлена функция для Woocommerce, которая выводит комбинацию атрибутов вариаций товара в наличии (если остаток больше нуля).
Вставлять код нужно в functions.php темы.

// WC 2.6.4: Выводит список имен вариаций в наличии на странице товара
add_action( 'woocommerce_single_product_summary', 'my_availability_variations', 15 );
function my_availability_variations() {
    global $product;
    if ( 'variable' == $product->product_type ) {
        $available_variations = $product->get_available_variations();
        $text_in_stock = '';
        $delimiter_in_stock = ', ';
        foreach ( $available_variations as $variation ) {
            if (!empty($variation['max_qty'])) {
                $variation_name = '';
                $delimiter_attr = '-';
                foreach ( $variation['attributes'] as $attr => $value ) {
                    if ( term_exists( $value, str_replace( 'attribute_', '', $attr ) ) ) {
                        $term = get_term_by( 'slug', $value, str_replace( 'attribute_', '', $attr ) );
                        if ( isset( $term->name ) ) {
                            $variation_name .= $term->name . $delimiter_attr;
                        }
                    }
                    else
                        $variation_name .= $value . $delimiter_attr;

                }
                $variation_name = rtrim( $variation_name, $delimiter_attr );
                $text_in_stock .= $variation_name . $delimiter_in_stock;
            }
        }
        if (!empty($text_in_stock)) {
            $text_in_stock = rtrim($text_in_stock, $delimiter_in_stock);
            echo 'В наличии: ' . $text_in_stock;
        }
    }
}

Результат будет примерно таким:
https://monosnap.com/file/86F7hgJsI0ZHkvgWLfy4nlZEOLd5nN#

Как добавить единицы веса после цены в WooCommerce

Для того, чтобы добавить единицы веса (… за кг) после цены у товара WooCommerce, вам нужно добавить следующий код в файл functions.php темы:

add_action( 'woocommerce_price_html', 'wc_custom_price', 10, 2 );
function wc_custom_price( $price, $product ) {
	return sprintf( __( '%s за КГ', 'woocommerce' ), woocommerce_price( $product->get_price() ) );
}
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

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