Зависит от того, где вы находитесь. Если вы находитесь на отдельной странице (например, показывает только один {{Вставить тип публикации здесь}}), вы можете использовать get_queried_object
, чтобы получить объект публикации.
<?php
if (is_singular()) {
$author_id = get_queried_object()->post_author;
$address = get_the_author_meta('user_email', $author_id);
}
Если вы где-то еще, вы можете использовать глобальный $wp_query
объект и проверить его $posts
свойство. Это должно работать и на отдельных страницах.
<?php
global $wp_query;
if (!empty($wp_query->posts)) {
$author_id = $wp_query->posts[0]->post_author;
$address = get_the_author_meta('user_email', $author_id);
}
Вы также можете просто «фальстартить» цикл и перемотать его, чтобы получить идентификатор автора. Это не повлечет за собой никаких дополнительных обращений к базе данных или тому подобное. WordPress извлекает все сообщения одновременно (на момент написания). rewind_posts
просто сбрасывает текущий пост (глобальный $post
) объект в начало массива. Недостатком является то, что это может привести к тому, что loop_start
действие сработает намного раньше, чем вы этого хотите - не так уж много, просто что-то, о чем нужно знать.
<?php
// make sure you're at the beginning.
rewind_posts();
// start the loop
the_post();
// get what you need
$address = get_the_author_meta('user_email');
// back to normal
rewind_posts();