Suporte » Desenvolvendo com WordPress » Criando Query da forma correta

  • Resolvido Vitor Carvalho

    (@vitorcarvalho)


    Olá Pessoal eu de novo rs.

    em um portal tenho o primeiro post deve conter imagem destacada, o post abaixo deve conter apenas O titulo e Data e o terceiro apenas o titulo. consegui fazer e funcionou corretamente da seguinte forma:

    <!--Post com imagem destacada -->
    <?php wp_reset_query();?>
    <?php query_posts($query_string . '&posts_per_page=1&cat=99'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
         <?php the_post_thumbnail(); ?>
    <?php endwhile; else: ?>
    <p>Desculpe mas Nenhuma p&aacute;gina foi encontrada</p>
    <?php endif; ?>
    
    <!--Post com titulo e data -->
    <?php wp_reset_query();?>
    <?php query_posts($query_string . '&posts_per_page=1&cat=99&offset=1'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
         Data da Postagem: <?php the_time('d/m/Y');?>
         <?php the_title(); ?>
    <?php endwhile; else: ?>
    <p>Desculpe mas Nenhuma p&aacute;gina foi encontrada</p>
    <?php endif; ?>
    
    <!--Post com apenas Titulo -->
    <?php wp_reset_query();?>
    <?php query_posts($query_string . '&posts_per_page=1&cat=99&offset=2'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
         <?php the_title(); ?>
    <?php endwhile; else: ?>
    <p>Desculpe mas Nenhuma p&aacute;gina foi encontrada</p>
    <?php endif; ?>

    Funcionou perfeitamente porém um colega me disse que estou chamando a base de dados 3x para consulta. Como seria a forma correta?

    Muito obrigado a todos que puderem ajudar

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • Vitor, te falta fazer mais uso das funções do PHP. Realmente, você tá fazendo basicamente a mesma consulta três vezes, o que é desnecessário.

    Se você precisa chamar três posts, faça apenas uma consulta mudando o valor do seu posts_per_page e utilize um pequeno contador para verificar qual é a posição atual dos seus posts. Abreviei um pouco o código (aberturas e fechamentos do PHP, por exemplo), mas acho que dá pra entender:

    <?php
    wp_reset_query();
    
    query_posts($query_string . '&posts_per_page=3&cat=99');
    
    if ( have_posts() ) :
    
        // Havendo posts, inicializamos o contador
        $i = 1;
    
        while ( have_posts() ) : the_post();
    
            /*
            O ideal aqui seria você usar a função switch, mas com o
            'if' fica mais fácil de entender. Tente fazer a troca.
    
            http://php.net/manual/pt_BR/control-structures.switch.php
            */
            if ( $i == 1 ) :
                //Post com imagem destacada
                the_post_thumbnail();
            elseif ( $i == 2 ) :
                // Post com titulo e data
                echo 'Data da Postagem: ' . get_the_time('d/m/Y');
                the_title();
            elseif ( $i ==3 ) :
                // Post com apenas Titulo
                the_title();
            endif;
    
            // Incrementamos o valor do contador
            $i++;
    
        endwhile; 
    
    else: ?>
    <p>Desculpe mas Nenhuma página foi encontrada</p>
    <?php
    endif;
    ?>

    Me ajudou demais amigo.
    Muito obrigado novamente.

    Massa. Só não esqueça de marcar o tópico como resolvido quando der tudo certo!

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • O tópico ‘Criando Query da forma correta’ está fechado para novas respostas.