Can anyone explain this logic to me in WordPress?

0

Well I saw this logic in WordPress theme developed by a colleague, and there was the following logic:

<?php
    $i = 0;
    $post_type = new WP_Query( 'post_type=cpt' );
    if ( $post_type->have_posts() ) :
        while ( $post_type->have_posts() ) :
            $post_type->the_post();
            if ( $i % 2 == 0 ) : ?>
                <div class="post-de-um-jeito" ></div> <?php
            else: ?>
                <div class="post-de-outro-jeito"></div> <?php
            endif;
        endwhile;
    endif;
?>

I know the logic is simple, however I'm new to PHP, and I've never seen this in WordPress. Thanks!

    
asked by anonymous 01.09.2015 / 12:54

2 answers

3

This logic is also part of PHP, but the difference in Wordpress is that it created its own methods for each action with the database, using a class:

    <?php
        //declara a variável $i como 0 para no while ele trazer a função de mod que explicarei abaixo
        $i = 0;
        /* Cria uma instância da classe de Querys do Wordpress,
           passando para o método construtor o parâmetro da consulta,
           que no caso é post_type=cpt, siginifica que o tipo
           "custom post type" (tipo de post customizado) */
        $post_type = new WP_Query( 'post_type=cpt' );
        //Então ele verifica se o método "have_posts()" possui algum post
        if ( $post_type->have_posts() ) :
            //Se ele retornar "true", ele faz um laço do tipo "while" no objeto para listar cada valor retornado 
            while ( $post_type->have_posts() ) :
 // aqui ele executa o método "the_post()", que internamente tem toda a estrutura da publicação, como título, texto, data etc.
                $post_type->the_post();
                //Aqui ele pega o resto da divisão de $i por 2, caso seja igual a 0, ele exibe abaixo do post uma estrutura de um jeito, caso contrário de outro jeito.
                if ( $i % 2 == 0 ) : ?>
                    <div class="post-de-um-jeito" ></div> <?php
                else: ?>
                    <div class="post-de-outro-jeito"></div> <?php
                endif;
              //aqui deveria ter um $i++;
            endwhile;
        endif;
    ?>

Basically this structure repeats itself by alternating the footer of each post for each post that is displayed in the loop. But I believe that for this rule with $i to work it should have just below, before endwhile an enhancer: $i++ ;

    
01.09.2015 / 14:09
0

I put the commented code:

<?php
    $i = 0;
    //Faz uma consulta dos posts, recebendo o parametro post_type, que pega os posts do tipo cpt
    $post_type = new WP_Query( 'post_type=cpt' );
    //Verifica se encontrou posts
    if ( $post_type->have_posts() ) :
        //Fz um loop nos posts
        while ( $post_type->have_posts() ) :
            $post_type->the_post();
            //Veirica o resto da divisão de $i por 2
            if ( $i % 2 == 0 ) : ?>
                <div class="post-de-um-jeito" ></div> <?php
            else: ?>
                <div class="post-de-outro-jeito"></div> <?php
            endif;
        endwhile;
    endif;
?>

But from what I understood from this code he wanted to intersperse the odd and even numbered post using counter $i , but he is not incrementing that variable. In case $i will always be 0 and will always enter if ( $i % 2 == 0 ) .

    
01.09.2015 / 13:30