在WordPress中的默认帖子中创建相关帖子部分

时间:2013-07-16 作者:clestcruz

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

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(); ?>
上面的代码设置了获取帖子的类别。我已经设置了第一个循环,这是帖子的内容。

1 个回复
SO网友:kkemple

function related_posts_shortcode( $atts, $content = null ) {
     //extract the shortcode atts and set default
     extract( shortcode_atts( array(
         \'cat\' => \'\',
         \'limit\' => 4
     ), $atts ) );

     //store the current post ID so we don\'t display it as featured
     $post_ID = get_the_ID();

     //set up our args for the query
     $args = array(
         \'cat\' => $cat,
         \'posts_per_page\' => $limit
     );

     $html = \'\';
     $i = 0;

     //query for our posts
     $posts = new WP_Query( $args );

     //if we have posts, loop them
     if( $posts->have_posts() ): while( $posts->have_posts() ): $posts->the_post();
         //check to make sure not the same post as main post
         if ( $post_ID != get_the_ID() )
             //if post has thumbnail display it with link to post
             if ( has_post_thumbnail( get_the_ID() ) ) {
                 $html .= \'<a href="\' . get_the_permalink(); . \'">\';
                     $html .= get_the_post_thumbnail( get_the_ID() );
                 $html .= \'</a>\';
             }
             $html .= \'<a href="\' . get_the_permalink(); . \'">\';
                $html .= \'<h2>\' . get_the_title() . \'</h2>\'; //set link on title and display it
             $html .= \'</a>\';
             ++$i;
         }

         //if $i == 2 ( $limit default - 2 ) we have three posts so break, change for more posts, i just went off of your image example
         if ( $i == $limit - 2 ) break;
     endwhile;
     endif;

     //even though WP_Query doesn\'t effect the main loop, reset it as precaution
     wp_reset_query();

     //return generated html for recent posts
     return $html;
}

add_shortcode( \'related_posts\', \'related_posts_shortcode\' );
将以下代码添加到函数中。php文件,然后在帖子中可以执行以下操作:[related_posts cat="6" limit="4"/] cat是你想要的帖子类别,limit是你想要的相关帖子数量(+1):加1的原因是因为你不想返回当前帖子,所以我们会多留一个,以防我们在循环中碰到当前帖子。你也可以在任何帖子中使用这个。如果要在模板中使用它,只需执行以下操作:<?php do_shortcode("[related_posts cat=\'6\' limit=\'4\'/]"); ?>
希望这对您有所帮助!

结束

相关推荐

Pagination posts. Url format

我对很长的帖子使用分页。所以我这里有个问题。我对标准的utl结构不满意(在我的项目中,这有几个个人原因)。例如,我有帖子/post.htm 我需要拿到它的第二页/post2.htm 不是/post.htm/2 我确信我不会用slug post2创建帖子/页面我如何才能以这种方式更改标准url?我试过这个add_action( \'init\', \'wpa5413_init\' ); function wpa5413_init() { add_