Исключить указанную категорию c в моем виджете связанных продуктов WooCommerce - PullRequest
2 голосов
/ 10 января 2020

Всем моим продуктам WooCommerce назначены две категории. Первая категория называется «Все товары», которой присваиваются все товары. Вторая категория зависит от продукта, это могут быть фильмы, книги, инструменты и т. Д. c.

Поскольку каждому продукту присваивается категория «Все продукты» в виджете связанных продуктов на странице продукта. вы видите каждый продукт, а не просто вторую (более конкретную c) категорию продуктов.

Я пытаюсь добавить некоторый код в функции. php, который будет игнорировать «Все продукты» как категория для виджета сопутствующих товаров, но по-прежнему отображаются сопутствующие товары для второй категории, которой назначен товар.

Пока у меня есть этот код, который все вместе скрывает виджет сопутствующих товаров. Я думаю, это потому, что каждому продукту назначен слаг «all-products», поэтому он удаляет виджет вместо подсчета второй категории, которой назначен продукт.

add_filter( 'woocommerce_related_products', 'exclude_product_category_from_related_products', 10, 3 );
function exclude_product_category_from_related_products( $related_posts, $product_id, $args  ){
    // HERE define your product category slug
    $term_slug = 'all-products';

    // Get the product Ids in the defined product category
    $exclude_ids = wc_get_products( array(
        'status'    => 'publish',
        'limit'     => -1,
        'category'  => array($term_slug),
        'return'    => 'ids',
    ) );

    return array_diff( $related_posts, $exclude_ids );
}

Как я могу редактировать этот код так что он будет скрывать категорию «все продукты» от показа в связанных продуктах, но по-прежнему будет отображать связанные продукты другой назначенной категории?

1 Ответ

2 голосов
/ 10 января 2020

Вам лучше с woocommerce_get_related_product_cat_terms. Вы можете использовать это для удаления 'all-products' в массиве категорий, используемых для получения продуктов.

add_filter( 'woocommerce_get_related_product_cat_terms', 'exclude_product_category_from_related_products' );
function exclude_product_category_from_related_products( $cats_array ) {

    $term = get_term_by('slug', 'all-products', 'product_cat');

    if ( $term && ($key = array_search($term->term_id, $cats_array)) !== false) {
        unset($cats_array[$key]);
    }

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