WP获取置顶文章

这几天折腾着给活着换一个新主题,自己一直有个癖好用自己制作的主题,比起zblog来说对还不是很熟悉,制作主题也是劳神劳力,在制作一款类杂志风格主题获取置顶文章的时候就出现了问题,研究了许久才解决了获得置顶文章并使the_content()函数正常显示标签之前的文字。

1. 如何获取WP最新置顶文章

其实在官方网站中已经有一个很详细的解释了,你可以在这看到:http://codex.wordpress.org/Template_Tags/query_posts,当然都是洋文的。如果不懂的话我也愿意在这翻译一个。

其实只需要一个比较简单的代码,以下的代码是获取第一篇置顶文章:

$sticky=get_option(‘sticky_posts’) ; query_posts(‘p=’ . $sticky[0]);

具体的使用方法如下:

$sticky=get_option(‘sticky_posts’) ;

query_posts(‘p=’ . $sticky[0]);

while (have_posts()) : the_post();

这里写下你需要的东西,如文章标题、内容、分类等等

把以上代码添加到WP主题中,便能够显示出所需要的置顶文章。当然如果你的主题中肯定会需要展示博客的其他文章列表,这时候你可能就不要再次展示置顶文章了,这时候,你需要对以上的代码进行如下的修改:

$sticky=get_option(‘sticky_posts’) ;

query_posts(‘p=’ . $sticky[0]);

while (have_posts()) : the_post();

$do_not_duplicate = $post->ID;

这里写下你需要的东西,如文章标题、内容、分类等等

接下来在需要显示博客其他文章的循环中使用如下的外加条件以滤除已经显示的置顶文章:

$args=array(

‘caller_get_posts’=>1,

‘paged’=>$paged

);

query_posts($args);

while (have_posts()) : the_post();

if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts);

这里写你需要的东西

2.如何解决提取置顶文章后the_content()函数显示全文的问题

在以上的方法中存在另外一个问题,至少我使用EasyPHP进行本地测试的时候出现了这个问题,那就是the_content(‘read more…’)这个函数不太正常,本应该只显示标签之前的文字,然而提取了置顶文章之后的第二个文章列表循环中会出现显示整个文章内容的问题,具体的原因不是很了解,也没有深入研究,不过这里提供一个简单的方法来解决获取置顶文章与the_content()函数冲突的问题。

需要做的就是在while (have_posts()) : the_post();之前添加一个参数定义,具体的例子如下:

$more = 0;

while (have_posts()) : the_post();

if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts);

这里写你需要的东西

以上的一番折腾之后,总算是能够正常显示了,不过本人对于以上的解决方法不是很满意,希望高手也来指导指导。

13 条评论 留下评论

留下评论







注意: 第一次留言的用户,您的评论需要审核通过才会显示,抱歉!