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