выборочно показывать сообщения WordPress на основе категории - PullRequest
0 голосов
/ 03 мая 2010

В настоящее время я использую следующий код как часть кода боковой панели для Wordpress (код работает нормально):

<ul class="linklist">
<?php $recentPosts = new WP_Query(); 
$recentPosts->query('showposts=12'); 
while ($recentPosts->have_posts()) : $recentPosts->the_post(); 
?> 
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Link to <?php the_title();
 ?>"> 
 <?php the_title(); 
?></a> </li> 
<?php endwhile;?> </ul> 

Показывает последние 12 сообщений. Но то, что я ищу, это следующее; сначала проверьте, к какой категории принадлежит текущее сообщение (сообщение, которое отображается на основе постоянной ссылки), а затем перечислите только последние сообщения, относящиеся к той же категории. Что следует редактировать? Спасибо!

Ответы [ 3 ]

0 голосов
/ 03 мая 2010

Возможно, это не самое короткое и умное решение, но оно должно работать таким образом, если я не включил опечатки.

Обратите внимание, что сообщения могут иметь несколько категорий, и приведенный ниже скрипт интересует только первая из них. Но вы также можете изменить скрипт и выбрать последние сообщения для нескольких категорий.

<?php
if (is_single()) :
    $post_id = $wp_query->posts[0]->ID; // get id of post
    $cats_of_post = get_the_category($post_id); // get categories by post id
    $first_cat_id = $cats_of_post[0]->cat_id; // get first category id
    $first_cat_name = $cats_of_post[0]->cat_name; // get category name
?>
<div id="widget-container-recent-in-category">
    <div class="widget-title">
        <h3>Latest posts in <?php echo $first_cat_name; ?>:</h3>
    </div>
    <div class="widget-content">
        <ul>
        <?php
            global $post;
            $posts_in_cat = get_posts('numberposts=5&category='.$first_cat_id);
            // iterate over posts in category and output as listitem
            foreach($posts_in_cat as $post) :
        ?>
           <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php
            endforeach;
        ?>
        </ul>
    </div>
</div>
<?php 
    endif;
?> 
0 голосов
/ 03 мая 2010

Это новый запрос, который можно использовать несколько раз в сообщении или на странице (с включенным php exec) или на боковой панели и не будет конфликтовать друг с другом или с основным циклом WP. Измените mycategory на собственное имя категории:

<?php $my_query = new WP_Query('category_name=mycategory&showposts=12'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<?php the_title(); ?></a>
<?php endwhile; ?>
0 голосов
/ 03 мая 2010

Взгляните на http://codex.wordpress.org/Function_Reference

Похоже, вы захотите get_the_category (). (Сообщения могут принадлежать нескольким категориям). Затем вы захотите вызвать get_posts (), передавая флаг категории и все, что захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...