wp_query выборка записей с миниатюрами
Какой аргумент отвечает за наличие у записи миниатюры (post_thumbnail) в функции wp_query?
К примеру, нужно выбрать 3 записи из категории у которых есть миниатюра.
Какой аргумент отвечает за наличие у записи миниатюры (post_thumbnail) в функции wp_query?
К примеру, нужно выбрать 3 записи из категории у которых есть миниатюра.
Если у поста есть стандартная WordPress миниатюра, то у него есть произвольное поле
_thumbnail_id
. А значит вам нужно получить посты у которых есть мета поле _thumbnail_id...Примерно такой код:
П.С. но это не совсем правильный подход, потому что в будущем вдруг может измениться принцип указания миниатюр и тогда ваш код станет нерабочим. Но с другой стороны WordPress не дает правильно решения этой задачи...
Спасибо Kama!
Не знал о 'compare' => 'EXISTS'
Решение администратора частично верное.
Но параметр 'EXISTS' здесь лишний, достаточно только ключа. При добавлении или удалении миниатюры ключ '_thumbnail_id' соответственно добавляется или удаляется с БД, а не очищается. И даже в случае ручного очищения значения ключа из БД, запись все равно попадет в результаты независимо от наличия или отсутствия параметра 'EXISTS', потому, что сама запись существует в БД.
Другое важное замечание – для удаления миниатюры в админке при редактировании записи не нужно нажимать кнопку «Сохранить», удаление происходит мгновенно без необходимости подтверждения или сохранения изменений. А значит можно случайно удалить миниатюру записи. Но при этом могут и скорее всего останутся фото, которые были загружены к этой записи. В результате, запись с изображениями, но без миниатюры, не попадет в результаты.
Если необходимо отфильтровать посты с изображениями, то нужно:
Получить массив ID постов.
Отфильтровать все прикрепленные и только прикрепленные фото по массиву ID постов више, после чего получить массив ID своих постов, к которым они прикреплены (post_parrent).
В результате мы получим действительно только те записи, которые содержат изображения, даже если миниатюра не установлена, и даже если процесс сохранения записи миниатюры в БД изменится с будущими обновлениями WP.
Пример кода:
П.с. с точки зрения семантики кода, в get_posts корректней использовать 'numberposts', а 'posts_per_page' - для WP Query, хотя они и идентичны по результату.
Детальнее тут: http://stackoverflow.com/a/3335128