Woocommerce последние продукты получают товары каждой родительской категории - PullRequest
2 голосов
/ 20 марта 2019

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

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

Пример: 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;
}

1 Ответ

0 голосов
/ 21 марта 2019

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

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 вашей активной дочерней темы (или активной темы). Это может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...