2014-09-04 2 views
0

Я получаю проблему в wordpress, используя query_posts.Как я могу получить сообщение 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 не предназначен для использования плагинов или тем, более конкретно Codex говорит:

Эта функция не предназначена для использования плагинов или темы. Как объясняется ниже, , есть более эффективные, более эффективные варианты, чтобы изменить главный запрос запроса . query_posts() является слишком упрощенным и проблематичным способом , чтобы изменить основной запрос страницы, заменив его новым экземпляром запроса. Он неэффективен (повторно запускает SQL-запросы), и будет отсутствовать сбой при некоторых обстоятельствах (особенно часто при работе с сообщениями разбиение на страницы). Любой современный WP-код должен использовать более надежные методы, такие как , используя для этого hook-pre_get_posts.

Цитируется:http://codex.wordpress.org/Function_Reference/query_posts

query_posts

В WordPress Codex рекомендует использовать WP_Query или get_posts(). В вашем случае, я думаю, get_posts() должно быть достаточно, поэтому этот пример будет использовать это. Ниже пример на самом деле из Codex WordPress, с несколькими модификациями для category, post_type и post_status:

<?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(); 
?> 

Кодекс:http://codex.wordpress.org/Template_Tags/get_posts

Смежные вопросы