Question

Je suis en train d'accélérer un site wordpress en condensant trois wp_queries en un seul. J'ai besoin de catégories séparées, donc je fais l'appel et la définition 3 tableaux pour maintenir le poste à l'aide d'un interrupteur, comme suit:

 $new_query = new WP_Query();
                $new_query->query('post_type=post&paged='.$paged);
                if ( $new_query->have_posts() ) : while ( $new_query->have_posts() ) : $new_query->the_post();              
                $category = choose_one_category(get_the_category());

                switch ($category){
                    case "Category 1":
                        $cat1[] = $post;
                        break;
                    case "Category 2":
                        $cat2[] = $post;
                        break;
                    case "Category 3":
                        $cat3[] = $post;
                        break;
                }


                endwhile; endif;

Ce qui me laisse avec 3 tableaux qui, avec les postes bien triés. Maintenant, je souhaite définir la variable DEHORS $ post la boucle afin que je puisse utiliser des méthodes comme the_date() & comments_number() sans avoir à réécrire ces fonctions, quelqu'un peut-il aider?

J'ai essayé:

                    foreach ($centre as $new_post){
                        $post = $new_post;

                                             include('front_page_loop.php');
                    } 

front_page_loop.php est mon code de boucle, mais je reçois juste le même poste, mais avec des dates différentes

Était-ce utile?

La solution

Je pense que la fonction setup_postdata($post) (interne) le fait. Je réussi à trouver la documentation appropriée; dans le Codex (typique), mais il y a des exemples avec ici et là comme Afficher les messages L'utilisation d'un personnalisé Sélectionnez la requête.

Cet extrait de test semble fonctionner très bien par exemple le code que vous avez en question:

foreach ( $cat1 as $post ) {

    setup_postdata($post);
    printf( 'Post "%s" was posted %s ago<br />',
        get_the_title(),
        human_time_diff( strtotime( get_the_date() ) )
        );
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top