Tengo una consulta para un tipo de publicación personalizada:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$books = new WP_Query(array(
'post_type' => 'wiki',
'posts_per_page' => '50',
'paged' => $paged
));
?>
Y quiero recorrer estas publicaciones usando loop-books.php:
<?php get_template_part( 'loop', 'books' ); ?>
Dentro del loop-books.php tengo estos, al igual que el loop.php regular, acabo de cambiar la función have_posts y the_post para que funcione con la consulta $ books:
<?php if ( $books->have_posts() ) : ?>
<?php while ($books->have_posts()) : $books->the_post(); ?>
<?php the_title(); ?><br/>
<?php endwhile; ?>
<?php endif; ?>
Pero después de esto, recibo un error de php:
Fatal error: Call to a member function have_posts() on a non-object in .../loop-books.php on line 1
Parece que la variable $ books no está disponible dentro de la función get_template_part. Cómo puedo resolver este problema? Si pongo la consulta $ books dentro del loop-books.php está funcionando bien, pero quiero separarlos.
wp-query
loop
get-template-part
passatgt
fuente
fuente
$books->
de loop-books.php y espero que funcione.<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $books = new WP_Query(array( 'post_type' => 'wiki', 'posts_per_page' => '50', 'paged' => $paged )); ?>
y aquí carga laget_template_part
consulta. Y después de esto, sireset postdata
creo que mi solución funcionará correctamente.Respuestas:
Tendrá que globalizarse
$books
(si desea seguirget_template_part()
) o usaren lugar de
get_template_part( 'loop', 'books' );
. Este problema se debe$books
a queloop-books.php
se define solo en el ámbito deget_template_part()
.fuente
$books
consulta es específica delloop-books.php
archivo de parte de plantilla, recomendaría simplemente poner la$books = new WP_Query()
llamada dentro del archivo de parte de plantilla.locate_template()
opción, para no saturar el espacio de nombres global.Un método alternativo: abrir / cerrar el bucle y luego usarlo
loop-books.php
para contener solo el marcado del contenido del bucle. p.ej:Luego, dentro de
loop-books.php
:fuente