Я пытаюсь запросить пользовательский тип сообщения для системы галереи. У меня есть флажок, чтобы установить галерею как «избранную» галерею (настраивается через плагин «Больше полей») - если этот флажок установлен, то значение мета становится равным 1, а затем, если не отмечено, становится равным 0. Все хорошо. Однако, если флажок никогда не был установлен, то мета-ключ никогда не создается, что означает, что я не могу запросить NOT LIKE 1, потому что он не существует.
Я хочу запросить 4 галереи, которые не помечены как «1» в этом мета-значении, но также и те, которые вообще не имеют этого значения. Есть ли способ всегда давать вновь добавленным сообщениям значение по умолчанию для этого метаключа (т. Е. Всегда делать их 0 по умолчанию, если поле не отмечено) или есть способ запросить ключ, который еще не установлен?
Мой текущий запрос:
$args = array(
'post_type' => 'gallery',
'showposts' => 4,
'meta_key' => 'gal-ID',
'order_by' => 'meta_value',
'order' => 'ASC',
'meta_query' => array( array(
'key' => 'main-gal',
'value' => false,
) ),
) );
И я пробовал различные попытки с «сравнить» => «НЕ НРАВИТСЯ», «! =» И т. Д. И т. Д.
Любые идеи? Этот билет, кажется, подразумевает, что это то, с чем нужно разобраться:
http://core.trac.wordpress.org/ticket/18158
Спасибо!
источник
В соответствии с параметрами пользовательских полей в Кодексе, специальные
NOT EXISTS
сравнение доступно начиная с версии 3.5 WPТехнически это выдает что-то вроде следующего SQL-запроса в постах:
Он работает, присоединяясь к мета-таблице по предоставленному ключу и выбирая только те записи, которые не привели к значимым данным (
IS NULL
). Таким образом, это работает только для случая, когда ключ вообще не существует и не будет работать для ключей, которые существуют с ложными значениями.источник
NOT EXISTS
сравнением. В качестве обходного пути для неустановленных мета-ключей я просто сохраняю 0 наsave_post
крючке, если мета-ключ не установлен. КакNOT EXISTS
работает? Будет ли он сортировать запрос ОПmain-gal
и затем заполнять 4 постами, у которых нет этой мета?Как указывалось в заявке, она не поддерживается ... до тех пор вам придется полагаться на индивидуальное решение.
Несколько пользователей спрашивали об этом раньше или, по крайней мере, спрашивали, как это сделать на форумах WordPress.org, поэтому я написал функцию для выполнения работы, которую я никогда не держал (pastebinned), к счастью, я нашел оригинальную тему где я предоставил ссылку на pastebin (срок действия которой не должен истекать).
http://pastebin.com/kgLt1RrG
Я написал это 8 месяцев назад, и я не проверял это (с тех пор), поэтому дайте мне знать о любых проблемах.
Надеюсь, это поможет..
источник
Самый простой способ, хотя и не самый чистый:
Это даст вам все ваши галереи, отсортированные по мета-ключу. Следующий шаг - выяснить, идут ли галереи со значением 1 после или перед другими публикациями. Таким образом, вы можете:
Другие методы, не требующие специального оператора SQL:
источник