0

我正在尝试在我的 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>
4

2 回答 2

1

我建议您不要在页面加载时加载相关帖子,因为这会极大地损害您网站的性能。

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

您可以通过 WordPress.org 存储库尝试一下:http ://wordpress.org/plugins/related-posts-for-wp/

于 2014-09-12T11:03:11.180 回答
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();
   ...
}

希望有帮助!

于 2013-07-15T19:56:06.543 回答