Задать вопрос
@Bareza

Фильтр Wordpress по произвольным полям, и проблема пустого поля?

Суть проблемы такова:
Существует фильтр, позволяющий менять выдачу постов по произвольным полям, допустим по цене. Т.е. по произвольному полю 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 - т.е. между "Цены от" и до "Цены до"
                );
	}

Как это обойти?
  • Вопрос задан
  • 915 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@eGenius18
там проблема не пустого поля, а его не существования :)

if (is_admin())
{
    $query = new WP_Query(array(
        'category_name' => 'cat',
        'posts_per_page' => -1,
    ));

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            if (!get_post_meta(get_the_ID(), 'clicks', true)) update_post_meta(get_the_ID(), 'clicks', 0);
        }
    }
    wp_reset_postdata();
}
Ответ написан
Комментировать
@Bareza Автор вопроса
Да, все верно, но как мне встроить это в фильтр?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы