2014-09-04 3 views
0

나는 query_posts를 사용하여 wordpress에 문제가 있습니다. 쿼리 다음내가 어떻게 카테고리 ID를 사용하여 WordPress 게시물을 얻을 수 있습니까?

$args = array('category__in' => array(9),'post_type'=>'banner-slider','post_status'=>'publish'); 
query_posts($args); 
while (have_posts()) : the_post(); 
the_title(); 
endwhile; 

query_post 반환 : 위의 쿼리에서

SELECT SQL_CALC_FOUND_ROWS bib_posts.* FROM bib_posts WHERE 1=1 AND 0 = 1 AND bib_posts.post_type = 'banner-slider' AND ((bib_posts.post_status = 'publish')) GROUP BY bib_posts.ID ORDER BY bib_posts.post_date DESC LIMIT 0, 10 

, 내가 잘못 0 = 1을 얻고있다

여기 내 코드입니다. 하지만 쿼리 게시물에서 category_in을 제거하면 쿼리가 올바르게 작동합니다.

내가 잘못한 곳을 제안 해주세요.

답변

1

query_posts이 플러그인이나 테마에 의해 사용하기위한 것이 아닙니다, 더 구체적으로 분과는 말한다 :

이 기능은 플러그인이나 테마에 의해 사용하는 것이 아닙니다. 나중에 설명하는 처럼 기본 쿼리 인 을 수정하는 데 더 좋은 옵션이 있습니다. query_posts()는 지나치게 단순하고 문제가있는 방법입니다. 페이지의 기본 쿼리를 의 새 인스턴스로 바꾸어 수정할 수 있습니다. 그것은 비효율적이며 (SQL 쿼리를 다시 실행합니다) 일부 상황에서는 특히 이 실패합니다 (특히 게시물을 처리 할 때 페이지 매김). 현대의 모든 WP 코드는과 같은 신뢰할 수있는 메서드를 사용해야합니다.이 메서드는 pre_get_posts 후크를 사용합니다. WP_Query 또는 get_posts()을 사용하는 것이 좋습니다http://codex.wordpress.org/Function_Reference/query_posts

query_posts

워드 프레스 사본 :

은에서 인용. 귀하의 경우에는 get_posts()으로 충분해야하므로이 예제에서는이를 사용하려고합니다.

<?php 
$args = array('category' => 9, 'post_type' => 'banner-slider', 'post_status' => 'publish'); 

$myposts = get_posts($args); 
foreach ($myposts as $post) : setup_postdata($post); ?> 
    <li> 
     <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
    </li> 
<?php 
endforeach; 
wp_reset_postdata(); 
?> 

분과 : 아래의 예는 category, post_typepost_status에 대한 수정의 부부와 함께, 워드 프레스 사본에서 실제로http://codex.wordpress.org/Template_Tags/get_posts

관련 문제