Depende de onde você está. Se você estiver em uma página singular (por exemplo, mostrando apenas um {{Insert Post Type}}), você pode usar get_queried_object
, que buscará o objeto post.
<?php
if (is_singular()) {
$author_id = get_queried_object()->post_author;
$address = get_the_author_meta('user_email', $author_id);
}
Se você estiver em qualquer outro lugar, você pode usar o objeto global $wp_query
e verificar sua propriedade $posts
. Isso também deve funcionar em páginas singulares.
<?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);
}
Você também pode apenas "iniciar falsamente" o loop e retroceder para obter o ID do autor. Isso não causará nenhum acerto de banco de dados adicional ou algo semelhante. WordPress busca todos os posts de uma só vez (no momento da escrita). rewind_posts
apenas redefine o objeto atual da postagem (o global $post
) para o início da matriz. A desvantagem é que isso pode fazer com que a ação loop_start
seja disparada mais cedo do que você deseja - não é um grande problema, apenas algo em que você deve estar ciente.
<?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();