получить сообщения() возвращает все сообщения, а не те, которые указаны с помощью "автор сообщения" =>
Я хочу получить массив с записями определенного пользователя для категории пользовательских типов записей.
Однако get_posts($arg) возвращает ВСЕ сообщения этого пользовательского типа, хотя я указал post_author
<?php $pages = get_posts(array('post_type' => 'profile','post_author' => $post->post_author)); ?>
<?php var_dump ($pages); ?>
В этом примере $post->post_author равно 11. Однако результатом приведенного выше кода является:
array(3) {
[0]=> object(WP_Post)#343 (24) {
["ID"]=> int(2326)
["post_author"]=> string(2) "11"
..etc.}
[1]=> object(WP_Post)#352 (24) {
["ID"]=> int(2324)
["post_author"]=> string(1) "0"
...etc.}
[2]=> object(WP_Post)#395 (24) {
["ID"]=> int(2322)
["post_author"]=> string(1) "0"
...etc.}
Почему get_posts() возвращает сообщения авторов, чей идентификатор не 11?
2 answers
post_author
недопустимый параметр для get_posts
. Вам действительно нужно взглянуть на список аргументов WP_Query
, чтобы увидеть это, поскольку get_posts()
на самом деле просто оболочка вокруг этого класса.
- автор ( int) - использовать идентификатор автора.
- имя автора ( строка) - используйте "имя пользователя" (НЕ имя).
- автор__в ( массив) - используйте идентификатор автора (доступен с версии 3.7).
- автор__не_в ( массив) - использовать идентификатор автора (доступен с версией 3.7).
Http://codex.wordpress.org/Class_Reference/WP_Query#Author_Parameters
То, что вы хотите, - это author
без части post_
. Попробуйте это, и это должно сработать.
Поскольку совершенно неясно, откуда берется $post->post_author
, наиболее вероятная проблема заключается в том, что вы либо не ссылаетесь на экземпляр $GLOBALS['post']
WP_Post
, либо у вас есть другой запрос после основного цикла, который заменяет основной запрос.
Вам лучше всего, вероятно, будет использовать wp_reset_query()
. Это приведет к перестройке объекта $GLOBALS['wp_query']
, который содержит текущий запрос, с $GLOBALS['wp_the_query']
снова, который содержит основной запрос , а затем вызовет wp_reset_postdata()
для перемотки основного запрос.
Если это не поможет, то есть вероятность, что какой-то плагин (или вы) или тема использовали query_posts()
, который перезаписывает глобальный объект $wp_the_query
и, следовательно, портит ваш цикл.