Suporte » Desenvolvendo com WordPress » Mostrar custom posts author em outra página dinamicamente

  • Resolvido Ricardo

    (@ricardo-carvalho)


    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!

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • Moderador Felipe Elia

    (@felipeelia)

    Oi @ricardo-carvalho,

    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?

    Criador do tópico Ricardo

    (@ricardo-carvalho)

    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!

    Criador do tópico Ricardo

    (@ricardo-carvalho)

    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!

    Moderador Felipe Elia

    (@felipeelia)

    Oi @ricardo-carvalho!

    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 classe WP_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 do else 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?

    Criador do tópico Ricardo

    (@ricardo-carvalho)

    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!

    Moderador Felipe Elia

    (@felipeelia)

    Oi @ricardo-carvalho,

    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;

    🙂

    Criador do tópico Ricardo

    (@ricardo-carvalho)

    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!

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • O tópico ‘Mostrar custom posts author em outra página dinamicamente’ está fechado para novas respostas.