2015-07-14 4 views
1

В wordpress У меня есть шаблон страницы, называемый новостью, который я хочу отображать все сообщения из одной категории - «Новости». Я не хочу использовать category.php, потому что на сайте уже есть массовый блог.using in_category, а не query_posts в wordpress

query_posts('cat=145'); 
while (have_posts()) : the_post(); 
//do something 
endwhile; 

работает нормально, но я читал, что query_posts имеет свои недостатки (как скорость)

Я попытался сделать это, но он просто не показал мне ничего:

while (have_posts()) : the_post(); 
if (in_category('145')) : //also tried 'News' 
//do something 

Почему не»in_category работы Вот?

ответ

1

пожалуйста попробуйте этот код:

$args = array('post_type' => 'post', 
     'tax_query' => array(
       array(
         'taxonomy' => 'category', 
         'field' => 'slug', 
         'terms' => 'news' // please pass here you news category slugs 
        ), 
       ) 
     ); 

    $loop = new WP_Query($args); 
    while ($loop->have_posts()) : $loop->the_post(); 
     print_r($post); 
    endwhile; 

    wp_reset_postdata(); 
1

Вы можете выполнить WP Query для достижения вашего требования.

Документация: https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters Пример:

<?php 
$args = array(
    'cat' => 145, 
); 
$the_query = new WP_Query($args); ?> 

<?php if ($the_query->have_posts()) : ?> 

    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
    <h2><?php the_title(); ?></h2> 
    <?php endwhile; ?> 

    <?php wp_reset_postdata(); ?> 

<?php endif; ?> 
+0

реальный жаль - его не работает. Если я поставлю эхо-отчет после того, как он распечатает, так что есть сообщения, но я не могу заставить the_title показать что-либо – maxelcat

0

Попробуйте использовать get_posts() функцию:

$get_p_args = array('category'=> 145,'posts_per_page'=>-1); 

$myposts = get_posts($get_p_args); 
foreach ($myposts as $post) : setup_postdata($post); ?> 
    <div> 
     <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
    </div> 
<?php endforeach; 
wp_reset_postdata();?> 
Смежные вопросы