web-dev-qa-db-fra.com

Comment puis-je afficher la boucle de publication sous forme de tableau?

Je crée un tableau de comparaison et le problème est dans la boucle While je ne suis pas en mesure de mettre le "tr" à la bonne place. J'ai besoin d'une mise en page comme ça

<table>
<tr>
<td>post title 1</td>
<td>post title 2</td>
<td>post title 3</td>
</tr>
<tr>
<td>post content 1</td>
<td>post content 2</td>
<td>post content 3</td>
</tr>
<tr>
<td>post author 1</td>
<td>post author 2</td>
<td>post author 3</td>
</tr>
</table>

Comment puis-je réaliser que cela ne semble pas être une option, voir mon code ci-dessous

<div class="acadp">
    <table>
        <tr>
        <?php while( $acadp_query->have_posts() ) : $acadp_query->the_post();  ?>
        <td><?php the_title(); ?></td>
         <td><?php the_content(); ?></td>
        <td><?php the_author(); ?></td>
        <?php endwhile; ?>
        <tr>

 </table>
</div>

<?php wp_reset_postdata(); ?>
1
Taj Khan
<div class="acadp">
<?php 
$compare =[];
while( $acadp_query->have_posts() ) {
    $acadp_query->the_post(); $post_meta = get_post_meta( $post->ID ); 
    $category = wp_get_object_terms( $post->ID, 'acadp_categories' ); 
    $compare['Title'][] = get_the_title();
    $compare['Manufacturer'][] =  $category[0]->name; 

    $compare['Image'][] = get_the_acadp_listing_thumbnail($post_meta);


    if( count( $fields ) ){
        foreach( $fields as $field ) {
            $value = $post_meta[ $field->ID ][0];
            $compare[$field->post_title][] =  $value;
        }
    }

    $compare['URL'][] = "<a href='".get_the_permalink()."' class='btn btn-primary'>View Details</a>";
}

?>
<table class="table table-bordered">
<?php foreach ($compare as $feature => $value): ?>
    <tr>
        <th><?php echo $feature; ?></th>
        <td><?php echo implode("</td><td>",$value); ?></td>
    </tr>
<?php endforeach; ?>
</table>
</div>
<!-- end of the loop -->

<!-- Use reset postdata to restore orginal query -->
<?php wp_reset_postdata(); ?>
1
Taj Khan

Vous avez besoin de 3 boucles séparées. Un pour chaque ligne, chaque poste créant une nouvelle colonne:

<div class="acadp">
    <table>
        <tr>
            <?php while( $acadp_query->have_posts() ) : $acadp_query->the_post();  ?>
                <td><?php the_title(); ?></td>
            <?php endwhile; ?>
        </tr>

        <tr>
            <?php while( $acadp_query->have_posts() ) : $acadp_query->the_post();  ?>
                <td><?php the_content(); ?></td>
            <?php endwhile; ?>
        </tr>

        <tr>
            <?php while( $acadp_query->have_posts() ) : $acadp_query->the_post();  ?>
                <td><?php the_author(); ?></td>
            <?php endwhile; ?>
        </tr>
    </table>
</div>

<?php wp_reset_postdata(); ?>
2
Jacob Peattie

Au lieu de faire écho à l'auteur, au titre, etc. pendant la boucle, vous pouvez également les stocker dans des tableaux. Ensuite, après la boucle, vous pouvez afficher chaque tableau sous forme de ligne dans votre table.

0
cjbj