WP获取置顶文章
这几天折腾着给活着换一个新Wordpress主题,自己一直有个癖好用自己制作的主题,比起zblog来说对wordpress还不是很熟悉,制作主题也是劳神劳力,在制作一款类杂志风格主题获取置顶文章的时候就出现了问题,研究了许久才解决了获得置顶文章并使the_content()函数正常显示标签之前的文字。
1. 如何获取WP最新置顶文章
其实在Wordpress官方网站中已经有一个很详细的解释了,你可以在这看到: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);
这里写你需要的东西
以上的一番折腾之后,总算是能够正常显示了,不过本人对于以上的解决方法不是很满意,希望高手也来指导指导。
这微博可真大。
@neeke:什么意思呢?
厉害!WP的很多你想要知道的东西应该都可以找到了吧?毕竟它的用户群太大了,你想到的也许已经有人搞过了。
我也比较喜欢自己修改主题的一些风格,以适合自己的口味,所以选择一个新的主题后,diy是肯定少不了的了。呵呵~
wp很有趣,把回复也算入评论数里,并且要另起一楼,而不是在原评论内容下面直接显示,所以,我们经常看到wp的文章评论数目很多。这时一个假象,但是博主喜欢,也更吸引来访者,能引起更多人的关注。
wp比zb还是要复杂的多,修改起来也很爽
@记忆盒子:找东西确实是比较方便,我通常会愿意在WP官方看英文的。主题我喜欢自己制作,而不仅仅是修改。至于说评论似乎也有嵌套回复的功能。最后祝圣诞快乐
@HzlzH:有挑战性的东西更让人有成就感是吧
这篇文章居然给了我无尽的思路…哈哈…
@Nobird:什么思路呢?又准备制作个插件之类了?
[...] 最大的问题在于首页上面文章的统计数字不对,调用的是置顶文章,在IE和Firefox下打开首页点击数字会自动加1,当然是用了Super Cache之后用户可能看不出来。 [...]
路过,学习了
@LM:
希望大家在这学到了东西就是我最大的满足了
从百度搜过了,发现了自己以前的评论,呵呵!