Исключить идентификаторы сопутствующих товаров в Woocommerce - PullRequest
0 голосов
/ 15 мая 2018
function woocommerce_output_related_products() {

    $args = array(
        'posts_per_page' => 4,
        'columns'        => 4,
        'orderby'        => 'rand', // @codingStandardsIgnoreLine.
        'post__not_in' => array(502,281)
    );

    woocommerce_related_products( apply_filters( 'woocommerce_output_related_products_args', $args ) );
}

Я скопировал эту функцию из includes/wc-template-functions.php в функции моей темы. Php

Чтобы убедиться, что мои изменения будут работать, я изменил posts_per_page на 3 и запросил только 3 вместо 4.

Мне нужно исключить несколько продуктов, но post__not_in не работает.

Я что-то не так делаю?Как еще можно исключить продукты, использующие эту функцию?

Я выводю продукты с этой функцией: woocommerce_output_related_products();

такая неприятная проблема.Я просто не могу исключить продукты отсюда.Кто-нибудь может помочь?

Я тоже попробовал это:

add_filter( 'woocommerce_output_related_products_args', function( $args ) { 
    $args = wp_parse_args( array(  "post__not_in" => array('502','281') ), $args );
    return $args;
});

Я сделал print_r ($ args), и он показал, что мой "post__not_in" был добавлен, но продукты все еще там.У меня есть правильное удостоверение личности.

1 Ответ

0 голосов
/ 15 мая 2018

Вместо этого используйте фильтр woocommerce_related_products, таким образом:

add_filter( 'woocommerce_related_products', 'exclude_related_products', 10, 3 );
function exclude_related_products( $related_posts, $product_id, $args ){
    // HERE set your product IDs to exclude
    $exclude_ids = array('502','281');

    return array_diff( $related_posts, $exclude_ids );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Проверено и работает.

...