Mam zapytanie o niestandardowy typ postu:
<?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
));
?>
I chcę przeglądać te posty za pomocą loop-books.php:
<?php get_template_part( 'loop', 'books' ); ?>
Wewnątrz loop-books.php mam te, podobnie jak zwykła loop.php, właśnie zmieniłem funkcję have_posts i the_post, aby działały z zapytaniem $ books:
<?php if ( $books->have_posts() ) : ?>
<?php while ($books->have_posts()) : $books->the_post(); ?>
<?php the_title(); ?><br/>
<?php endwhile; ?>
<?php endif; ?>
Ale potem pojawia się błąd php:
Fatal error: Call to a member function have_posts() on a non-object in .../loop-books.php on line 1
Wygląda więc na to, że zmienna $ books nie jest dostępna w funkcji get_template_part. Jak mogę rozwiązać ten problem? Jeśli wstawię zapytanie $ books do pliku loop-books.php działa dobrze, ale chcę je rozdzielić.
wp-query
loop
get-template-part
passatgt
źródło
źródło
$books->
plik loop-books.php i mam nadzieję, że zadziała.<?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 )); ?>
i tutaj ładujeszget_template_part
zapytanie. A jeśli tak,reset postdata
to myślę, że moje rozwiązanie będzie działać poprawnie.Odpowiedzi:
Będziesz musiał albo zglobalizować
$books
(jeśli chcesz się trzymaćget_template_part()
), albo użyćzamiast
get_template_part( 'loop', 'books' );
. Ten problem jest spowodowany$books
wloop-books.php
jest określony jedynie w zakresie odget_template_part()
.źródło
$books
zapytanie jest specyficzne dlaloop-books.php
pliku części szablonu, polecam po prostu umieszczenie$books = new WP_Query()
wywołania w pliku części szablonu.locate_template()
opcję nie zaśmiecania globalnej przestrzeni nazw.Alternatywna metoda: otwórz / zamknij pętlę, a następnie użyj,
loop-books.php
aby zawierać tylko znaczniki dla zawartości pętli. na przykład:Następnie w
loop-books.php
:źródło