Суть проблемы такова:
Существует фильтр, позволяющий менять выдачу постов по произвольным полям, допустим по цене. Т.е. по произвольному полю price. Однако, если метаполе не заполнено, такие посты в выдачу просто не попадут.
if ($_GET['price_ot'] != '' || $_GET['price_do'] != '') { // если передано поле "Цена от" или "Цена до"
if ($_GET['price_ot'] == '') $_GET['price_ot'] = 0; // если "Цена от" пустое, то значит от 0 и выше
if ($_GET['price_do'] == '') $_GET['price_do'] = 9999999; // если "Цена до" пустое, то будет до 9999999
$args['meta_query'][] = array( // пешем условия в meta_query
'key' => 'price', // название произвольного поля
'value' => array( (int)$_GET['price_ot'], (int)$_GET['price_do'] ), // переданные значения ОТ и ДО для интервала передаются в массиве
'type' => 'numeric', // тип поля - число
'compare' => 'BETWEEN' // тип сравнения, здесь это BETWEEN - т.е. между "Цены от" и до "Цены до"
);
}
Как это обойти?