Saya memiliki permintaan untuk jenis posting khusus:
<?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
));
?>
Dan saya ingin mengulang posting ini menggunakan loop-books.php:
<?php get_template_part( 'loop', 'books' ); ?>
Di dalam loop-books.php saya punya ini, sama seperti loop.php biasa, saya baru saja mengubah have_posts dan the_post berfungsi untuk bekerja dengan permintaan $ books:
<?php if ( $books->have_posts() ) : ?>
<?php while ($books->have_posts()) : $books->the_post(); ?>
<?php the_title(); ?><br/>
<?php endwhile; ?>
<?php endif; ?>
Tapi setelah ini, saya mendapatkan kesalahan php:
Fatal error: Call to a member function have_posts() on a non-object in .../loop-books.php on line 1
Jadi sepertinya variabel $ books tidak tersedia di dalam fungsi get_template_part. Bagaimana saya bisa mengatasi masalah ini? Jika saya meletakkan $ books query di dalam loop-books.php berfungsi dengan baik, tetapi saya ingin memisahkannya.
wp-query
loop
get-template-part
passatgt
sumber
sumber
$books->
dari loop-books.php & saya harap ini akan berhasil.<?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 )); ?>
dan di sini Anda memuatget_template_part
kueri. Dan setelah ini jika Andareset postdata
maka saya pikir solusi saya akan berfungsi dengan baik.Jawaban:
Anda harus mengglobal
$books
(jika ingin tetapget_template_part()
) atau menggunakannyabukannya
get_template_part( 'loop', 'books' );
. Masalah ini disebabkan oleh$books
diloop-books.php
didefinisikan hanya dalam lingkup dariget_template_part()
.sumber
$books
kueri khusus untuk fileloop-books.php
templat-bagian, saya akan merekomendasikan menempatkan$books = new WP_Query()
panggilan di dalam file templat-bagian.locate_template()
memilih, untuk tidak mengacaukan namespace global.Metode alternatif: buka / tutup loop, dan kemudian gunakan
loop-books.php
untuk hanya berisi markup untuk konten loop. misalnya:Kemudian, di dalam
loop-books.php
:sumber