Я пытаюсь не загружать некоторые товары на странице категории в зависимости от их названия.Погуглив я нашел несколько примеров с таксономиями, которые мне совсем не помогают.Итак, как я могу отредактировать код ниже, чтобы соответствовать моим потребностям?Спасибо!
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;
}
}
}
}