Não consigo obter o ID do autor da postagem fora do loop para fazer o get_the_author_meta funcionar. Até agora, tentei abordagens diferentes:
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;
Eu preciso do ID do autor para transmiti-lo para:
$address = get_the_author_meta('user_email', $author_id);
Alguma sugestão?
Respostas:
A maneira mais simples e direta de obter o ID do autor da postagem fora do loop, se você souber o ID da postagem, é usar a função principal do WordPress
get_post_field()
.Se você ainda não conhece o ID da postagem da página em que está, então, como o WP 3.1, a coisa mais fácil a fazer é usar a função
get_queried_object_id()
(procure na lista de Métodos) que funciona mesmo fora do loop.Se isso não funcionar, dê uma explicação mais detalhada de onde você está tentando executar seu código e podemos ver se podemos ajudar mais.
fonte
Veja como obter e obter o ID do autor fora do loop do WordPress:
Então é possível para nós
the_author_meta
:fonte
Depende de onde você está. Se você estiver em uma página singular (por exemplo, apenas mostrando um único {{Insert Post Type Here}}), você pode usar o
get_queried_object
que buscará o objeto de postagem.Se você estiver em outro lugar, poderá usar o
$wp_query
objeto global e verificar sua$posts
propriedade. Isso deve funcionar também em páginas singulares.Você também pode simplesmente "iniciar falso" o loop e retroceder para obter o ID do autor. Isso não acarreta nenhum acerto adicional no banco de dados ou algo semelhante. O WordPress busca todas as postagens de uma só vez (no momento da redação).
rewind_posts
apenas redefine o$post
objeto de postagem atual (o global ) para o início da matriz. A desvantagem é que isso pode fazer com que aloop_start
ação seja acionada mais cedo do que você deseja - não é um grande negócio, apenas algo para estar ciente.fonte
Parece que funciona fora do loop, talvez isso ajude.
Você também pode definir manualmente o ID da postagem e pegar desta maneira:
Altere o ID out para postar o ID manualmente para acesso fora do loop.
Não são ótimas soluções, mas espero que ajude.
fonte
Eu tive o mesmo problema aqui ao tentar criar um widget que exibisse postagens em destaque com informações do autor.
Eu usei algumas das dicas da @chrisguitarguy 2nd tip.
Meu código ficou assim:
fonte
Para obter e obter o ID do autor fora do loop:
Então use
lembre-se se você está buscando o ID da postagem no loop e acessando o loop lateral do autor, ele fornecerá apenas dados do último ID da postagem no loop
fonte
Espero que isso ajude:
fonte
Por que você não usa the_author_meta
Isso pode ser usado dentro do loop
fonte