Получение всех записей независимо от их статуса

18 янв. 2017 г., 20:13:13
Просмотры: 675
Голосов: 2

Я использую плагин Sola Testimonial, и в нем есть функция, которая получает количество всех опубликованных записей.

$my_query = new WP_Query('post_type=testimonials&posts_per_page=-1&status=publish');

$count = $my_query->post_count;

return intval( $count );

Эта функция возвращает только записи, у которых второй параметр установлен в "Approved" ("Pending Approval" - другой вариант). Мне нужно получить количество всех записей типа "testimonial", независимо от этого параметра.

Я пробовал:

$count = $my_query->found_posts;

и

status=any

и

$my_query = new WP_Query('post_type=testimonials&posts_per_page=-1&post_status=any');

но подсчитываются только записи с параметром "Approved".

Есть идеи, как получить количество всех записей "testimonial", независимо от статуса?

Спасибо!

Вот как выглядит статус одобрения в панели редактирования (он отделен от статуса публикации):

Статус одобрения записей в Sola Testimonial

0
Все ответы на вопрос 1
4

Вы должны написать свой запрос следующим образом (используйте "post_status" вместо "status"):

$my_query = new WP_Query('post_type=testimonials&posts_per_page=-1&post_status=any');

Все доступные статусы записей:

Значение по умолчанию - 'publish', но если пользователь авторизован, добавляется 'private'.

Публичные пользовательские статусы также включены по умолчанию. И если запрос выполняется в контексте админки (административная область или AJAX-запрос), добавляются защищенные статусы. По умолчанию защищенные статусы - 'future', 'draft' и 'pending'.

  • 'publish' - опубликованная запись или страница. 'pending' - запись ожидает проверки.
  • 'draft' - запись в статусе черновика.
  • 'auto-draft' - новая созданная запись без содержимого.
  • 'future' - запись, которая будет опубликована в будущем.
  • 'private' - не видна пользователям, которые не авторизованы.
  • 'inherit' - ревизия.
  • 'trash' - запись в корзине (доступно с версии 2.9).
  • 'any' - извлекает записи с любым статусом, кроме тех, у которых 'exclude_from_search' установлен в true (т.е. trash и auto-draft).

Вы можете указать несколько статусов в одном запросе:

$query = new WP_Query( array(
    array( 'post_status' => array( 'pending', 'draft', 'future' ) )
) );
18 янв. 2017 г. 20:19:26
Комментарии

Большое спасибо @KAGG. Я попробовал это, но все равно возвращается количество только для подмножества постов 'testimonial', а не для всех. Огромное спасибо!

Hairgami_Master Hairgami_Master
18 янв. 2017 г. 20:24:50

Это выглядит странно. Я добавил в ответ все доступные типы записей.

KAGG Design KAGG Design
18 янв. 2017 г. 20:35:51

Спасибо, KAGG. Происходит что-то странное, что мы никак не можем понять. Это должно работать, но по какой-то причине не работает. Благодарю за помощь!

Hairgami_Master Hairgami_Master
27 янв. 2017 г. 16:31:21

К сожалению, это не работает для статуса "pending" в последней версии WordPress 6.4.3

Eric Hepperle - CodeSlayer2010 Eric Hepperle - CodeSlayer2010
12 апр. 2024 г. 15:12:01