WordPress : WP Query Foreach a une boucle infinie

Publié par Jean-Michel le

J’ai besoin d’aide. Je n’arrive pas à comprendre pourquoi ce script boucle à l’infini parce que mon site continue de geler le serveur, c’est-à-dire qu’il limite les ressources au point d’arrêter mon serveur SQL.

global $post;
$args = array(
    'posts_per_page'  => 4,
    'numberposts'     => 4,
    'offset'          => 0,
    'category'        => $id,
    'orderby'         => 'post_date',
    'order'           => 'DESC',
    'meta_key'        => '',
    'meta_value'      => '',
    'post_type'       => 'post',
    'post_mime_type'  => '',
    'post_parent'     => '',
    'post_status'     => 'publish',
    'suppress_filters' => true
);
$tips = get_posts( $args ); 
foreach( $tips as $post ) : setup_postdata($post); ?>
    <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>">
        <?php if(has_post_thumbnail()){ the_post_thumbnail( 'medium', array('itemprop'=>'image') ); } ?>
    </a>

<?php endforeach?>

Comment résoudre ça? Merci

Solution n°1 trouvée

<?php
    $args = array(
        'posts_per_page'  => 4,
        'numberposts'     => 4,
        'offset'          => 0,
        'category'        => $id,
        'orderby'         => 'post_date',
        'order'           => 'DESC',
        'meta_key'        => '',
        'meta_value'      => '',
        'post_type'       => 'post',
        'post_mime_type'  => '',
        'post_parent'     => '',
        'post_status'     => 'publish',
        'suppress_filters' => true
    );
        $the_query1 = new WP_Query( $args );
        if (count($the_query1->posts)>0) {

            while ( $the_query1->have_posts() ) : $the_query1->the_post(); ?>
                    <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>">
                            <?php if(has_post_thumbnail()){ the_post_thumbnail( 'medium', array('itemprop'=>'image') ); } ?>
                    </a>
            <?php endwhile;


        }
?>

Solution n°2 trouvée

après global $post;s’il vous plaît ajouter ce qui suit

$old_post = $post;

Puis après l’ endforeachajouter ce qui suit

wp_reset_postdata()

et après cela ajouter

 $post = $old_post;

J’espère que cela t’aides

Solution n°3 trouvée

Votre boucle foreach n’est pas fermée correctement, c’est la raison pour laquelle elle se répète à l’infini.

Remplacez la dernière ligne de votre code par ceci :

<?php endforeach; ?>

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *