Стояла задача сделать фильтр по наличию в интернет-магазине.
После некоторых поисков нашла отличное решение https://opttour.ru/plugins/filtr-po-nalichiyu/
Немного изменила под свои задачи.
Взяла этот кусок кода и вставила в шаблон туда, где этот фильтр должен быть. В моем случае это wp-content/plugins/woocommerce/templates/loop/orderby.php На странице вывода категорий нужного товара в верхней части.
if ( !is_search() ) {
$poductcatid = get_queried_object_id();
$args = array(
'post_type' => 'product',
'numberposts' => -1,
'fields' => 'ids',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $poductcatid
),
)
);
$products = get_posts( $args );
foreach($products as $product){
$produts_status[] = get_post_meta( $product, '_stock_status', true );;
}
$produts_status_uniq = array_unique($produts_status);
wp_reset_postdata();
echo '<div class="car-brand__stock">';
echo '<select name="stock-switcher" id="stock-switcher"><option value="all">Все авто</option>';
if (in_array('instock', $produts_status_uniq)) { echo '<option value="instock">В наличии</option>'; }
if (in_array('onbackorder', $produts_status_uniq)) { echo '<option value="onbackorder">Под заказ</option>'; }
echo '</select>';
echo '</div>';
}
Скрипт скопировала в отдельный файл carscript.js по адресу: моя дочерняя тема/assets/js/carscript.js
Подключила в functions.php дочерней темы (там уже подключался файл со стилями, поэтому добавила подключение скрипта туда же):
function oceanwp_child_enqueue_parent_style() {
$theme = wp_get_theme( 'OceanWP' );
$version = $theme->get( 'Version' );
// Load the stylesheet.
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'oceanwp-style' ), $version );
wp_enqueue_script( 'stock-script', get_template_directory_uri() . '/assets/js/carscript.js', array(), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'oceanwp_child_enqueue_parent_style' );
Все работает.