Pregunta

Estoy tratando de acelerar un sitio de WordPress mediante la condensación de tres wp_queries en una sola. Tengo una necesidad de categorías separadas, por lo que estoy haciendo la llamada y la definición de matrices de 3 a ocupar el cargo mediante un interruptor, así:

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

Lo que me deja con 3 matrices, que con los postes correcta ordenación. Ahora deseo de definir el EXTERIOR $ destino variable del bucle para que pueda utilizar métodos como the_date() y comments_number() sin tener que volver a escribir esas funciones, ayuda Puede alguien?

He intentado:

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

                                             include('front_page_loop.php');
                    } 

Cuando front_page_loop.php es mi código de bucle, pero acabo de conseguir el mismo puesto, aunque con diferentes fechas

¿Fue útil?

Solución

Creo que la función setup_postdata($post) (interno) lo hace. No pude encontrar la documentación apropiada para ello en el Codex (típico), pero hay ejemplos con aquí y allá como en Viendo Mensajes el uso de un Seleccionar consulta personalizada.

Este fragmento de prueba parece bien el trabajo, por ejemplo, código que tiene en cuestión:

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() ) )
        );
}
Licenciado bajo: CC-BY-SA con atribución
scroll top