Domanda

Sto cercando di accelerare un sito WordPress condensando tre wp_queries in uno solo. Ho un bisogno di categorie separate, quindi mi sto facendo la chiamata e la definizione di 3 matrici a ricoprire l'incarico con un interruttore, in questo modo:

 $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;

che mi lascia con 3 matrici, che con i posti ben ordinati. Ora desidero per definire il posto al di fuori $ variabile il ciclo in modo che posso usare metodi come the_date() & comments_number() senza dover riscrivere quelle funzioni, Chiunque può aiutare?

ho provato:

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

                                             include('front_page_loop.php');
                    } 

Dove front_page_loop.php è il mio codice loop, ma ho appena ottenere lo stesso posto, anche se con date differenti

È stato utile?

Soluzione

Credo che la funzione setup_postdata($post) (interno) lo fa. Non sono riuscito a trovare la documentazione adeguata per esso nel Codex (tipico), ma ci sono esempi con qua e là come in Visualizzazione Messaggi Uso di una query di selezione personalizzata .

Questo frammento di prova sembra funzionare bene per esempio di codice che avete in domanda:

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() ) )
        );
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top