Зависит от того, где вы находитесь. Если вы находитесь на отдельной странице (например, показывает только один {{Вставить тип публикации здесь}}), вы можете использовать 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();