Как добавить .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() ) ); }