WordPress手动修改文章排列顺序
我们常见的WordPress站点文章排序,通常情况下是按发布时间的升序或降序方式排列,这种排序方式几乎可以满足大多数站点的需求了,但是有些另类的站点可能会有一些另类的需求:我想手动修改文章的排列方式,可以随意更改文章的排列位置。其实WordPress的query_posts就可以轻松解决这个问题,不过你得自己动手改一些代码。
修改方法:
1、打开WordPress当前主题目录,打开index.php,搜索代码:
1 | while (have_posts()) |
将其替换成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /** * 名称:WordPress手动修改文章排列顺序 * 作者:露兜 * 博客:http://www.ludou.org/ * 最后修改:2010年11月14日 */ $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args=array( 'meta_key' => 'sort', 'orderby' => meta_value, 'paged' => $paged, 'order' => DESC ); query_posts($args); while (have_posts()) |
接着搜索:
1 | endwhile; |
将其改成:
1 | endwhile;wp_reset_query(); |
2、给之前发表的所有文章添加自定义字段(或者称作自定义栏目,在文章编辑页底部可以看到),名称为 sort ,值填数字。这样在首页,文章的排列顺序就按照sort字段的值,从大到小排列了。通过修改sort字段的值,可以达到自定义文章排列顺序的目的。
3、需要注意的是,通过以上修改后,你必须给所有文章添加自定义字段sort,否则没有添加sort字段的文章将无法在首页显示。这也许就是手动排序需要付出的代价吧,要不然何谓手动?
4、如果你同时想手动修改标签页、分类页等存档页面的文章排列顺序,同样可以按照第一步介绍的方法来操作,修改主题目录下的archive.php等。
参考文档:
Function Reference/query posts
本文版权归露兜博客所有,转载引用请完整注明以下信息:
本文作者:Ludou
本文标题:WordPress手动修改文章排列顺序
本文地址:http://www.ludou.org/wordpress-customize-posts-order.html
你真应该在首页的位置上,给每一篇文章都加上一个日期,这样看的人估计会更有兴趣点。
否则这么好的文章,多浪费啊。
我是故意去掉首页文章发布日期的,这样读者就不会因为文章的新旧而偏向新文章或旧文章,而更加注重他需要的内容。其实我是剥夺了读者对新旧文章选择权利,同时隐去博客文章发布的频率。
这应该算是值得探讨的问题,你为什么觉得加上日期,读者就愿意点呢?很希望听到你的意见。
好不容易遇到个专业人士,问个与此方不相干的wp问题:
wp开启多站点后,如果在主域名的首页聚合分站的内容呢?我搜索了很久,没找到相关的资料,如果告知,感激不尽!
很抱歉,目前没有研究过WordPress的多站点。提供个思路吧,如果主站和分站是在同一台服务器上,可以采取直接读数据库的方式。
写个插件吧
个人觉得这个根本没必要写成插件。
可以在文章保存的时候自动补上meta,就不怕没有写入了
save_post 这个action是个好选择
我也说不上来具体为什么,这应该是一个大众的心理,都是想追求最新的。我认为有些东西相当于是一个潜移默化的东西,虽然被证实有些步骤是多余的,可这一步还是有很多人要走。
所以有些东西建立在日期上,有它自身的优势在,一来很直观,它可以让我知道,就这么短短的时间里头,我错过了几篇文章,同时也让我知道你的更新频率。
当然也许你是对的,你要让访客更加注重你的内容,这点在具体的文章里头是很明显,而访客买不买单的这个问题,你可要好好统计下了,至少就我个人来说,加上时间之后,可以提高我的浏览效率。
而且,我觉得你的就连评论回复修改下也好,至少我在邮箱里头就能知道你回了什么样的讯息,觉得我能答上,同时觉得有必要,我就回头来评价。
博主的见解的确跟别人不太一样哦,呵呵,各有道理吧
我觉得取消日期跟你说的一样,是个好方法:)但是会不会再搜索引擎上有问题呢?还是说一如既往的,只是不显示,但是实际上对搜索引擎无干扰:)比较迷茫!哈哈啊
搜索引擎有自己的一套时间机制,而不会因为你在首页添加/删除日期就会错误判断你的文章发布时间,如果是这样子,那么搜索引擎太傻了。
以前玩过WordPress,感觉是越搞越复杂了,性能不太好。不过蛮好折腾的,前后台分离做得比较好。
学习了,这个比较特殊啊
个人来说还是比较喜欢升序的排列顺序!呵呵
楼主,请教一个问题。如何用query_posts提取符合如下条件的posts
1、post含有自建的meta,如sort等等。
2、提取的posts结果为随机排列,而非按照meta排列。
比如说,一个WP站点有50篇博客,其中30篇带有sort,如何实现从这30篇中随机抽取5篇出来?
另一个与之类似的问题。
用query_posts('showposts=10&cat=10&orderby=date')函数提取10篇posts,但是我现在只需要其中的的第2-9篇,并保持orderby顺序。因为第一篇需要做一些较为特殊的展示处理。问:如何实现?
望回复,非常感谢
1、上文中第二段代码:'orderby' => meta_value,
改成:
'orderby' => rand,
'showposts' => 5,
2、
query_posts('showposts=10&cat=10&orderby=date')
改成:
query_posts('showposts=10&cat=10&orderby=date'); $i=0;
while (have_posts()) :
改成:
while (have_posts()) :
$i++;
if ( $i==1 || $i==10 ) continue;
难着不会,会者不难。再次感谢。十分有用!!!
不错。可是这样一改,为什么用在文章页面中进行调用却无法出现翻页的循环呢?
本教程所讲述的内容不涉及修改你的文章页,如果是首页无法翻页,请确保你是按照文章的内容操作!
我不是很清楚什么是"进行调用却无法出现翻页的循环"
可能是我没有表述清楚,比如首页下面都有一个page navi之类的翻页吗?
文中的代码已经考虑了翻页问题,如果是page navi没有修改之前的那么多页面数,可能的问题是你的文章数量不足以翻页,详见文中的第2、3条说明
是不是我删除了 'meta_key' => 'sort'这一行的缘故?
如果删除了这行,你之前所做的一切都是白费
我的本意是想通过这个修改做成一个按照标题或发布时间排序的可翻页的页面,并且通过文章的页面模板来调用。毕竟用自定义字段比较麻烦。谢谢博主耐心解答。
那你可以参考这篇文章的内容:
http://www.ludou.org/wordpress_query_posts.html
解决,博主太强大了。
博主人很好,很热心!
博主:我在你网站上下了Aurelius主题,archive.php中的“随机阅读”、“评论最多”、“标题排序”。第一次进入分类页,然后点“随机阅读”地址为:…./category/businessreview?rand=true,没有问题。再点评论最多时,地址栏就变成了…./category/businessreview?rand=true&commented=true这样。怎样才能变成…/category/businessreview?commented=true呢?本地测试没法发地址!谢谢!
重新下载:
http://www.ludou.org/create-wordpress-themes-page.html
代码的描述似乎有点问题,应该在整个循环前面增加query_posts,而不是在while ( have_posts() )前面吧?官方的描述是这样的。害我菜鸟琢磨了好久才搞定。
//The Query
query_posts('posts_per_page=5');
//The Loop
if ( have_posts() ) : while ( have_posts() ) : the_post();
首先if ( have_posts() )是判断是否有文章,不是循环的开始;
其次while ( have_posts() )才是循环的开始。
本文描述的功能,不管是放在if ( have_posts() )前面还是放在while ( have_posts() )的前面,都不影响正常使用。
不过按照官方文档的说明的写法更严谨。
奇怪我放到while ( have_posts() )前面失败了,可能是我弄错了什么地方。
从您的博客学习了不少东西,万分感谢!
解决了排序的问题,不过出现了,调用文章摘要的时候显示图片的问题,不知为何?
正常情况下,自动文章摘要只有文字内容。