Есть ли способ скрыть товар на странице категории по названию? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь не загружать некоторые товары на странице категории в зависимости от их названия.Погуглив я нашел несколько примеров с таксономиями, которые мне совсем не помогают.Итак, как я могу отредактировать код ниже, чтобы соответствовать моим потребностям?Спасибо!

function check_variations( $q ) {

    if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {

        $tax_query = (array) $q->get('tax_query');

        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field' => 'term_taxonomy_id',
            'terms' => array( $outofstock_term->term_taxonomy_id ),
            'operator' => 'NOT IN'
        );

        $q->set( 'tax_query', $tax_query );

    }

    remove_action( 'pre_get_posts', 'check_variations' );
}

ОБНОВЛЕНИЕ

Я действительно новичок в Woocommerce.Хотя я впервые работаю над этим, у меня не было особых сложностей на этом пути.Но у меня есть проблема: поскольку работать с вариациями продуктов очень сложно, я создал файл json с доступными вариациями в зависимости от категории продукта (существует множество вариантов - по 91 для каждого продукта).На странице продукта я сделал с JS, и он работает просто отлично.Теперь я просто хочу скрыть некоторые продукты в категории страницы фильтра.Вот мой php, читающий json:

function check_variations( $q ) {
    $page_url = $_SERVER['REQUEST_URI'];

    if (strpos($page_url, '?filter_modelo=') !== false) {
        $filter = explode('?filter_modelo=', $page_url)[1];
    }

    if($filter) {
        $json_data = file_get_contents(get_template_directory_uri().'/release/json/variations-in-stock.json');
        $json_decoded = json_decode($json_data, true);

        foreach($json_decoded as $key => $value){
            if (strpos(implode(",", $value[0]), $filter) !== false) {
                //var_dump($key);
                //Here I want to hide products with $key on its name
                return;
            }
        }
    }
}
add_action( 'woocommerce_shop_loop', 'check_variations' );

ОБНОВЛЕНИЕ 2

Я сделал это с помощью файла content-product.php.Это сработало, но с ошибкой разбивало на страницы.

$page_url = $_SERVER['REQUEST_URI'];
$product_name = $product->get_title();

if (strpos($page_url, 'filter_modelo=') !== false) {
    $filter = explode('filter_modelo=', $page_url)[1];
    $json_data = file_get_contents(get_template_directory_uri().'/release/json/variations-in-stock.json');
    $json_decoded = json_decode($json_data, true);

    foreach($json_decoded as $key => $value){
        if (in_array($filter, explode(', ', $value[0]['modelos']))) {
            if (strpos($product_name, $key) !== false) {
                return;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...