Inserimento <div> ogni 2 articoli in un loop Wordpress

PazzoFrontEnd

Utente Attivo
8 Ott 2013
46
0
6
Buongiorno a tutti
da poco mi sono affacciato a wordpress e php e vorrei una spiegazione su come fare una cosa: ho bisogno di inserire un <div class="clear"></div> per impaginare al meglio i miei articoli all'interno del loop wordpress. La sintassi di quello che voglio realizzare è la seguente:

HTML:
<article></article>
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>

ecc...per quanti sono gli articoli impaginati ma sempre ogni due. Come posso fare ad inserire tale logica all'interno di un loop (mi viene in mente un foreach ma non capisco come inserirlo) ?

PHP:
        <?php 
            if ( have_posts() ) {

                while (have_posts()) : the_post(); ?>

                  <?php //qui l'html da mostrare ?>
                    
            <?php    endwhile;

            } else {
                //no content
            }

        ?>

Grazie anticipatamente e buona giornata
 
Ciao, puoi inizializzare un contatore prima del ciclo , lo incrementi all'interno, verifichi se divizibile per 2 e nel caso aggiungi il div
PHP:
if ($i % 2 == 0)
            echo "<div class='clear'></div>";
        $i++;
 
Ultima modifica:
Ciao Criric

Ho provato ma il div me lo inserisce prima e non dopo:

PHP:
        <?php 
            if ( have_posts() ) {


                while (have_posts()) : the_post(); 

                    if ($i % 2 == 0)
                        echo "<div class='clear'></div>";
                    $i++; 
                                           
                    get_template_part("content", "article" );


                endwhile;

            } else {
                //no content
            }

        ?>

Dentro "get_template_part("content", "article" );" inserisco il "the_content()". La situazione che si crea è la seguente:

Codice:
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article>
<article></article>

Li vorrei prima. Se invece sposto il controllo dopo il ciclo ho una situazione del genere:

Codice:
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article>

Come posso affinare la cosa?
Grazie
 
Invertili
PHP:
get_template_part("content", "article" );
if ($i % 2 == 0)
        echo "<div class='clear'></div>";
  $i++;
ps:
non hai inizializzato la variabile prima del ciclo prova con $i = 0 o $i = 1
 
Nel frattempo ho fatto questa prova
PHP:
<style>
    .article {
        width: 200px;
        height: 100px;
        border: 1px solid black;
        margin-right: 1px;
        float:left;
    }
    .clear {
        clear:both;
    }
</style>
<?php
$i = 0;
while ($i < 10) {
    echo "<div class='article'></div>";
    $i++;
    if ($i % 2 == 0)
        echo "<div class='clear'></div>";
}
sembra funzionare
 
Ho fatto così:

PHP:
            $custom_query = new WP_Query("category_name=homepage");

            $i = 0;
           
            if ( $custom_query->have_posts() ) {


                while ($custom_query->have_posts()) : $custom_query->the_post(); 
                                           
                    get_template_part("content", "article" );


                    if ($i % 2 == 0)
                        echo "<div class='clear'></div>";
                    $i++; 

                endwhile;

            } else {
                //no content
            }

Ma mi restituisce questo:

Codice:
<article></article>
<div class="clear"></div>
<article></article>
<article></article>
<div class="clear"></div>
<article></article

Non va...dove sbaglio? So già che sarà una fesseria abominevole....
 
Incrementa prima di verificare
PHP:
 $i = 0;
    while ($custom_query->have_posts()) : $custom_query->the_post();

        get_template_part("content", "article");

        $i++;
        if ($i % 2 == 0)
            echo "<div class='clear'></div>";
    endwhile;
 

Discussioni simili