Я не могу получить идентификатор автора сообщения вне цикла, чтобы заставить get_the_author_meta работать. До сих пор я пробовал разные подходы:
1.
$author_id=$post->post_author;
2.
global $post;
$author_id=$post->post_author;
3.
$post_tmp = get_post($post_id);
$author_id = $post_tmp->post_author;
4.
$author_id = $posts[0]->post_author;
Мне нужен идентификатор автора, чтобы передать его:
$address = get_the_author_meta('user_email', $author_id);
Какие-либо предложения?
Ответы:
Самый простой и простой способ получить идентификатор автора сообщения вне цикла, если вы знаете идентификатор сообщения, - это использовать базовую функцию WordPress
get_post_field()
.Если вы еще не знаете идентификатор публикации страницы, на которой вы находитесь, то, начиная с WP 3.1, проще всего использовать
get_queried_object_id()
функцию (ищите ее в списке методов), которая работает даже вне цикла.Если это не работает для вас, пожалуйста, дайте более подробное объяснение того, где вы пытаетесь запустить свой код, и мы посмотрим, сможем ли мы помочь в дальнейшем.
источник
Вот как получить и получить идентификатор автора вне цикла WordPress:
Тогда это возможно для нас
the_author_meta
:источник
Зависит от того, где вы находитесь. Если вы находитесь на отдельной странице (например, показывает только один {{Вставить тип публикации здесь}}), вы можете использовать
get_queried_object
, чтобы получить объект публикации.Если вы где-то еще, вы можете использовать глобальный
$wp_query
объект и проверить его$posts
свойство. Это должно работать и на отдельных страницах.Вы также можете просто «фальстартить» цикл и перемотать его, чтобы получить идентификатор автора. Это не повлечет за собой никаких дополнительных обращений к базе данных или тому подобное. WordPress извлекает все сообщения одновременно (на момент написания).
rewind_posts
просто сбрасывает текущий пост (глобальный$post
) объект в начало массива. Недостатком является то, что это может привести к тому, чтоloop_start
действие сработает намного раньше, чем вы этого хотите - не так уж много, просто что-то, о чем нужно знать.источник
Похоже, что это работает за пределами цикла, может быть, это поможет.
Вы также можете вручную установить идентификатор сообщения и получить его следующим образом:
Измените ID для публикации идентификатора вручную для доступа вне цикла.
Не очень хорошие решения, но, надеюсь, это поможет.
источник
У меня возникла та же проблема, когда я пытался создать виджет, который отображал избранные сообщения с информацией об авторе.
Я использовал некоторые подсказки из @chrisguitarguy 2-го совета.
Мой код выглядел так:
источник
Чтобы получить и получить идентификатор автора вне цикла:
Тогда используйте
помните, что если вы извлекаете идентификатор сообщения в цикле и обращаетесь к автору вне цикла, то он будет предоставлять только данные последнего сообщения в цикле
источник
Надеюсь, это поможет:
источник
Почему бы вам не использовать the_author_meta
Это может быть использовано в цикле
источник