Последние продукты Woocommerce получают товары каждой родительской категории

Как и многие другие пользователи, я использую сопутствующие товары для своего магазина. Я попытался изменить его так, чтобы он заменял последнее слово именем активной категории. Таким образом, когда продукт находится в категории Кровать, соответствующий текст продукта будет Это наши любимые кровати. Это категория подушка, это это наши любимые подушки и так далее. Подсказка в том, что он всегда использует активную категорию.

Пример: Сон (родительская категория) > Подушка (подкатегория) >Название продукта. В этом случае будет отображаться подушка.

Пример: Sleep > Название продукта. В данном случае используется слово sleep.

Проблема, которая у меня есть сейчас, заключается в том, что он должен использовать только продукты из одной категории. Поэтому, когда это подушка, он должен отображать только подушки, но в моем случае он также показывает товары из родительской категории. Как это исправить, чтобы отображались только товары из активной категории?

// Rename Related Products
function get_favorite_category_title_for( $product_id ) {
    $title = __('This could be interesting', 'woocommerce');

    $cats = $cats = wp_get_post_terms( $product_id, 'product_cat', array('orderby'=> 'id', 'order'=>'DESC') );
    if( count($cats) > 0 ) {
        $title = __( 'Unsere beliebtesten ', 'woocommerce' ) . $cats[0]->name;
    }
    return $title;
}

person p_e_88    schedule 20.03.2019    source источник


Ответы (1)


Попробуйте следующий непроверенный код без каких-либо гарантий (на основе некоторых других связанных ответов):

add_filter( 'woocommerce_related_products', 'filter_woocommerce_related_products', 10, 3 );
function filter_woocommerce_related_products( $related_posts, $product_id, $args  ){
    // Get the product categories
    $terms = wp_get_post_terms( $product_id, 'product_cat' );

    $related_posts = wc_get_products( array(
        'status'    => 'publish',
        'limit'     => -1,
        'category'  => array(reset($terms)->slug),
        'orderby'   => 'ID',
        'order'     => 'DESC',
        'return'    => 'ids',
    ) );

    return $related_posts;
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Это может работать.

person LoicTheAztec    schedule 21.03.2019