在wordpress中创建相关的帖子部分

时间:2013-07-15 05:34:03

标签: wordpress post themes categories

我正在尝试在wordpress自定义主题中创建相关的帖子部分。这里的目标是,如果用户查看某个类别的帖子,它还将显示下面该类别的所有帖子。我在下面附上了一张图片。

http://i255.photobucket.com/albums/hh140/testament1234/relatedposts_zpsa830adfc.jpg

我如何实现这一目标?我是否像这样使用wp_query?

<?php query_posts('cat=6', 'posts_per_page=-4=-'); if(have_posts()) : while(have_posts()) :the_post(); ?>

上面的代码设置了获得帖子的类别。 '猫'

解决 kwncc

    <div id="post-container" class="eleven columns alpha omega post">

         <?php $postCategories = ''; while ( have_posts() ) : the_post(); ?>
         <h2 class="post-title"><?php the_title() ?></h2>

         <?php setPostViews(get_the_ID()); ?> <!-- Set Post Views -->

         <ul class="meta-icons-large">
            <li id="meta-author-large"><span><?php the_author_posts_link() ?> /</span></li>
            <li id="meta-categories-large"><span><?php the_category(', ') ?> /</span></li>
            <li id="meta-comments-large"><span><?php comments_number() ?> /</span></li>
            <li id="meta-date-large"><span><?php the_time('F jS, Y') ?> /</span></li>
            <li id="meta-views-large"><span><?php echo getPostViews(get_the_ID()); ?></span></li> <!-- Display Post Views -->
         </ul>

         <?php the_content(); ?>

         <?php endwhile; ?>
    </div>


    <div id="related-posts-container" class="eleven columns alpha omega related-post">
         <h2>related posts</h2>

         <?php $postCatIds = ''; foreach($postCategories as $catIndex => &$catValue){
            $postCatIds .= $category->cat_ID; if( $catIndex < (count($postCategories)-1)){ $postCatIds .= ', ';
                       }
            }
            ?>

         <?php query_posts('cat='.$postCatIds, 'posts_per_page=4'); if(have_posts()) : while(have_posts()) { the_post(); } ?>

         <div id="related-post-thumbnail-container" class="three columns alpha related-posts">

             <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>

         </div>

          <?php endwhile; endif; wp_reset_query();?>

   </div>

   <div id="comments-container" class="eleven columns alpha omega comments">
        <?php comments_template('', true); ?>
   </div>


</div>

2 个答案:

答案 0 :(得分:1)

我建议您不要在页面加载时加载相关帖子,因为这会严重损害您网站的效果。

WordPress的免费WordPress插件相关帖子会自动查找相关帖子(以及其他基于标题的帖子)并为您缓存它们,为您提供真实的相关帖子,而不会损害您网站的性能。完成自动链接后,您可以根据需要手动添加,编辑或删除相关帖子。该插件还附带模板标签,因此您可以在自定义主题中的任何位置显示相关帖子。只需在主题中使用rp4wp_children(),即可显示相关帖子。

您可以通过WordPress.org repo试试:http://wordpress.org/plugins/related-posts-for-wp/

答案 1 :(得分:0)

此页面包含2个不同的循环: 1.主要内容 - 帖子的文章 2.相关职位。

对于第一部分,您只需要包含循环。此外,由于您要查找与本文相关的帖子,您还必须获取当前的帖子类别。

PHP代码:

$postCategories = '';
if(have_posts()) : while(have_posts()){
   the_post();
   $postCategories = get_the_category();
   ...
}

然后,对于要包含相关帖子的第二部分,您可以获取与当前帖子相关的类别ID,并创建所需的查询。

// get comma separated category IDs
$postCatIds = ''; 
foreach($postCategories as $catIndex => &$catValue){

   $postCatIds .= $category->cat_ID;
   if( $catIndex < (count($postCategories)-1)){
     $postCatIds .= ', ';
   }
}

//query the related categories posts
query_posts('cat='.$postCatIds, 'posts_per_page=4'); 
if(have_posts()) : while(have_posts()) {
   the_post();
   ...
}

希望有所帮助!