맞춤 게시물 유형에 대한 검색어가 있습니다.
<?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
));
?>
그리고 loop-books.php를 사용하여 이러한 게시물을 반복하고 싶습니다.
<?php get_template_part( 'loop', 'books' ); ?>
loop-books.php 안에 일반 loop.php와 같이 $ books 쿼리와 함께 작동하도록 have_posts 및 the_post 함수를 변경했습니다.
<?php if ( $books->have_posts() ) : ?>
<?php while ($books->have_posts()) : $books->the_post(); ?>
<?php the_title(); ?><br/>
<?php endwhile; ?>
<?php endif; ?>
그러나이 후, 나는 PHP 오류가 발생합니다 :
Fatal error: Call to a member function have_posts() on a non-object in .../loop-books.php on line 1
get_template_part 함수 내에서 $ books 변수를 사용할 수없는 것처럼 보입니다. 이 문제를 어떻게 해결할 수 있습니까? loop-books.php 안에 $ books 쿼리를 넣으면 정상적으로 작동하지만 분리하고 싶습니다.
답변
당신은 세계화하거나 $books
(고집하고 싶다면 get_template_part()
) 사용해야합니다.
require( locate_template( 'loop-books.php' ) );
대신에 get_template_part( 'loop', 'books' );
. 이 문제에 의해 발생 $books
으로 loop-books.php
만 정의되고 영역 의 get_template_part()
.
답변
다른 방법 : 루프를 열고 닫은 다음 루프 내용에 대한 마크 업loop-books.php
만 포함 하는 데 사용 합니다. 예 :
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// Get books query
$books = new WP_Query(array(
'post_type' => 'wiki',
'posts_per_page' => '50',
'paged' => $paged
));
// Open books loop
if ( $books->have_posts() ) :
while ($books->have_posts()) : $books->the_post();
// Get loop markup
get_template_part( 'loop', 'books' );
// Close books loop
endwhile;
endif;
?>
그런 다음 내부 loop-books.php
:
<?php the_title(); ?><br/>