Отображение бестселлеров Woocommerce по текущей категории - PullRequest
0 голосов
/ 04 ноября 2019

Я хотел бы создать короткий код, который можно разместить на страницах категорий, например, на боковой панели. Он должен отображать наиболее продаваемые продукты категории.

Единственное решение, которое я нахожу, - это указать категорию с помощью slug или id, как показано ниже:

[best_selling_products category = ”КУХОННЫЕ АКСЕССУАРЫ ”columns =" ​​1 "per_page =" 5 "]

Как преобразовать шорткод в нечто подобное?

[best_selling_products category =” CURRENT-CATEGORY ”columns =" ​​1 "per_page =" 5 "]

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Добавьте следующий фрагмент кода в файл functions.php вашей активной темы, чтобы получить наиболее продаваемые продукты с текущей $term или страницы категории -

function modify_woocommerce_shortcode_products_query( $query_args, $attributes, $type ) {
    if( $type != 'best_selling_products' ) return $query_args;

    $term = get_queried_object();
    if( $term ) {
        if( !isset($query_args['category'] ) ){
            $query_args['category'] = $term->slug;
        }
    }
    return $query_args;
}
add_filter( 'woocommerce_shortcode_products_query', 'modify_woocommerce_shortcode_products_query', 99, 3 );

Добавить, просто используйте шорткод woocommerce по умолчанию [best_selling_products columns="1" per_page="5"], чтобы получитьданные.

0 голосов
/ 05 ноября 2019

Добавьте это к своим functions.php

function custom_best_selling_products( $attr = array() ){
    $string = '[best_selling_products ';
    $string .= ' category="' . get_query_var( 'term' ) . '" ';
    if( $attr ){
        foreach ( $attr as $key => $value ) {
            $string .= ' ' . $key . '="' . $value . '" ';
        }
    }
    $string .= ']';

    return do_shortcode( $string );
}

add_shortcode( 'custom_best_selling_products', 'custom_best_selling_products' );

Это создаст пользовательский шорткод, и вы можете использовать его следующим образом: [custom_best_selling_products columns="1" per_page="5"] Этот шорткод автоматически получит категорию

...