Кастомизация строки ajax-поиска товара
Магазин на WP+WooCommerce. Есть вариативные товары со статусом "Черновик" и, при этом, "В наличии" (товар "аджика пастеризованная" на фото):
При добавлении этих товаров через админку в заказ вариации этого товара доступны к добавлению, что вводит в заблуждение менеджеров, которые работают с заказами:
Как можно отключить показ черновиков в строке поиска?
Пока нарыл такой код (в разных вариантах, но смысл один, все они используют фильтр woocommerce_json_search_found_products):
add_filter( 'woocommerce_json_search_found_products', function( $products ) {
foreach ($products as $id => $title) :
if(wc_get_product($id)->get_status() == 'draft')
unset( $products[$id] );
endforeach;
return $products;
}, 10, 1);
но он не работает. Черновики товаров всё равно доступны к добавлению в заказ.
Ответы (1 шт):
Автор решения: Артём Свистула
→ Ссылка
Вопрос решился следующим кодом:
add_filter( 'woocommerce_json_search_found_products', function( $products ) {
foreach ($products as $id => $title) :
if(get_post_type($id) == 'product_variation' && wp_get_post_parent_id($id)->get_status() == 'draft')
unset( $products[$id] );
endforeach;
return $products;
}, 10, 1);
Т.е. статус "Черновик" должен проверяться не у вариации, а у "родителя".