Mostrar custom posts author em outra página dinamicamente
-
Olá galera!
Preciso de uma ajudinha para mostrar os posts do author da seguinte maneira:
Eu tenho 2 custom posts: EMPRESAS E OFERTAS.
Ambas os posts desses custom posts são inseridos pelo mesmo author.Minha pergunta é?
Como eu faço pra mostrar os posts OFERTAS na single do post EMPRESAS puxando dinamicamente pegando pelo ID do author ou algo assim?
Desde já agradeço a todos que puderem ajudar.
Valeu!
-
Você pode usar a função get_posts(), da maneira abaixo. Não esqueça de colocar o post_type certo e será preciso também alterar o que você quer exibir de cada oferta, ok?
$ofertas = get_posts( array( 'post_type' => 'oferta', 'posts_per_page' => -1, 'author' => get_the_author_meta( 'ID' ), ) ); if ( count( $ofertas ) ) { ?> <div class="ofertas"> <?php foreach ( $ofertas as $oferta ) { setup_postdata( $oferta ); ?> <div class="oferta"> <?php the_title(); ?> </div> <?php } ?> </div> <?php wp_reset_postdata(); }
Não esqueça de voltar para dizer se funcionou ou não e, se for o caso, marcar seu tópico como resolvido, beleza?
Faaala @felipeelia!
Cara muito obrigado pela a ajuda. Eu inseri o código que você me envio e não sei dizer o motivo mas não funcionou.
Então os argumentos do seu código e inseri eles em uma query simples e funcionou perfeitamente do jeito que eu queria…
Nossa você não imagina o tempo que eu perdi procurando essa solução e testando códigos e nada de resultados. provavelmente eu não incluir as palavras certas na busca. Mas você entendeu tudo certinho… kkkk
Muito obrigado novamente pela ajuda.
O meu código ficou assim:
<?php query_posts ( array ( 'post_type' => 'ofertas', 'posts_per_page' => -1, 'author' => get_the_author_meta( 'ID' ), ) ); ?> <?php if (have_posts()): while (have_posts()) : the_post(); ?> <h2><?php the_title(); ?></h2> <p>Descrição da Oferta</p> <?php endwhile; else: ?> <p>Nenhuma oferta encontrada.</p> <?php endif;?>
Só espero que não de problemas.
Valeu, abraço!
Faaala @felipeelia!
Cara muito obrigado pela a ajuda. Eu inseri o código que você me envio e não sei dizer o motivo mas não funcionou.
Então eu peguei os argumentos do seu código e inseri eles em uma query simples para testar e funcionou perfeitamente do jeito que eu queria…
Nossa você não imagina o tempo que eu perdi procurando essa solução e testando códigos e nada de resultados. Provavelmente eu não inclui as palavras certas na busca. Mas você entendeu tudo certinho… kkkk
Muito obrigado novamente pela ajuda.
O meu código ficou assim:
<?php query_posts ( array ( 'post_type' => 'ofertas', 'posts_per_page' => -1, 'author' => get_the_author_meta( 'ID' ), ) ); ?> <?php if (have_posts()): while (have_posts()) : the_post(); ?> <h2><?php the_title(); ?></h2> <p>Descrição da Oferta</p> <?php endwhile; else: ?> <p>Nenhuma oferta encontrada.</p> <?php endif;?>
Só espero que não de problemas.
Valeu, abraço!
Que bom que conseguiu progredir!
Então, a função
query_posts
não deve ser usada por temas e plugins, ela sobrescreve completamente a query da página, podendo comprometer algum código que venha depois dela. Use a classeWP_Query
então:$query_ofertas = new WP_Query( array( 'post_type' => 'ofertas', 'posts_per_page' => -1, 'author' => get_the_author_meta( 'ID' ), ) ); if ( $query_ofertas->have_posts() ): while ( $query_ofertas->have_posts() ) : $query_ofertas->the_post(); ?> <h2><?php the_title(); ?></h2> <p>Descrição da Oferta</p> <?php endwhile; wp_reset_postdata(); else: ?> <p>Nenhuma oferta encontrada.</p> <?php endif;
A função
wp_reset_postdata()
ali antes doelse
permite que o WP volte com as coisas pro lugar. No seu caso, ele volta com os dados da empresa para o lugar certo, facilitando o entendimento e o fluxo da execução 🙂Depois diga se funcionou dessa forma e não esqueça de marcar seu tópico como resolvido, beleza?
Olá @felipeelia!
Funcionou belezinha! Obrigado pelas orientações.
Só mais uma ajuda antes de fechar esse tópico:
Na single do post OFERTAS eu coloquei um link para levar pra página contendo todos os posts do autor, neste caso author.php
O código que estou usando pra pegar o link do autor é esse:
<?php the_author_posts_link(); ?>
Tem alguma forma de eu fazer com que esse link em vez de levar para a página author.php levar para a página da EMPRESA que seria do mesmo autor? E assim eliminar a página author.php?
Muito obrigado!
Você pode aplicar o mesmo código, só alterando o tipo e o número de posts que quer pegar:
$query_empresa = new WP_Query( array( 'post_type' => 'empresas', 'posts_per_page' => 1, 'author' => get_the_author_meta( 'ID' ), ) ); if ( $query_empresa->have_posts() ): while ( $query_empresa->have_posts() ) : $query_empresa->the_post(); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endwhile; wp_reset_postdata(); else: ?> <p>Nenhuma empresa encontrada.</p> <?php endif;
🙂
Maravilha @felipeelia!
Muito obrigado pela força. Há tempos estava procurando por essa solução mas não tinha conseguindo encontrar. Vários e vários testes com tudo o que é tipo de código e nada kkkkkkk. Eu devia estar usando os termos errados na minha pesquisa, é bem mais simples do que eu imaginava.
Isso não só vai me ajudar nesse projeto como em vários outros.
Muito obrigado novamente!
Grande abraço!
- O tópico ‘Mostrar custom posts author em outra página dinamicamente’ está fechado para novas respostas.