新写了一个插件,wp_list_posts,主要用于生成存档文章清单。写这个插件的初衷,是因为升级到2.3后,发现一直在用的dd-sitemap-gen无法使用,提示错误,虽然我已经将它升级到兼容2.3的最新版了,但还是出错。虽然后来找到问题原因,自己的数据表前缀不是默认的wp_,当然主要原因在于dd-sitemap-gen中有一段代码没中的wp_没有被用$wpdb->替代,导致前缀非wp_的用户出现问题。再则发现该插件在生成存档清单时,严重消耗数据库查询,基本查询次数是和存档数目是,如果站点上有300个存档,那么它需要动用大于300次的数据库查询。原因在于,该插件调用了get_permalink()来生成存档的链接,而每调用一次get_permalink()都会产生一次数据查询。
因为站点上的存档数目还不是很多,仅200多,可以将它们全部列在一个页面中,暂时还没必要使用分页功能。基于此,萌发了自己写一个显示存档文章的插件的念头。在写的过程中,又不断新增功能。如显示指定标签的文章等。站点上的几个专题页面,全部是由该插件自动生成的。如,我的wordpress插件专题,X01HT使用技巧类专题等。
用途
用途好多啊。嘿嘿,认真阅读下。当然,主要用于显示指定存档,
1. 支持按目录显示存档。
2. 按时间显示存档,可按年,月,日来显示。且可指定时间格式。效果可见我站上的存档页面,是按月份(M Y)生成的。
3. 显示含有指定tag(标签)的存档。支持多标签。可用于自动生成系列文章等。效果见本站内的几个专题页面。
4. 显示指定目录下的存档。
5. 显示同一目录下的存档。可用于同一目录下的相关文章显示。
6. 支持自定义是否显示评论数或发布时间。
7.采用自建函数生成文章链接(永久链接)。大大减少数据库查询。目前还不支持含有目录名的永久链接格式。在今后的升级中再来解决这个问题。
8. 生成代码通过W3C XHTML1.0 Transitional验证。
安装
将wp_list_posts.php上传到plugin目录,在后台插件页面激活即可。
适用WP2.3以上版本。
代码调用
用下面代码调用函数。默认将以月为单位生成全部存档清单。
参数说明
本插件,自带了很多参数,嘿嘿,是有必要说明下。。在调用时,各个参数之间用&隔开。如
wp_list_posts(‘display=incategory&categoryname=wordpress’)
将显示名为wordpress的目录下的存档,默认为显示最新的10个。
wp_list_posts(‘display=tag&tag=wordpress,plugin&show_date=true’)
将显示同时含有wordpress和plugin2个标签的存档,并且显示存档的发布时间。
具体参数说明:
1.$display,最重要的一个参数,共有5个值,用于不同用途。
1.1.$display=’time’,将按指定的timeformat为单位来显示全部存档。timeformat的解释见下面。
1.2.$display=’category’,按目录显示全部存档。
1.3.$display=’tag’,将显示含有指定tag的存档。支持多tag输入,当$display设置成tag时,必须输入tag=’tagname’,否则将报错。tag参数解释见下。
1.4.$display=’incategory’,显示指定目录下的文章。必须同时设定categoryname的值,categoryname参数解释见下。另外,可设定limit的值,默认值为10,即仅显示按时间降序排列的头10个存档。
1.5.$display=’postincategory’,用于在单篇文章中显示同一目录下的文章。可设定limit的值,默认值为10,即仅显示按时间降序排列的头10个存档。
2.$categoryname,和$display=’incategory’同时使用。用于设定指定目录的名字。支持中文目录名。需注意,输入中文目录名的时候,使用本函数的模板文件必须保存为utf-8格式,非ansi格式。
3.$dateformat,用于指定发布时间的显示格式,支持php默认时间格式。默认为$dateformat=’Y.m.d’。即显示2007.11.20。点此查看更多php的时间格式。
4.$limit,用于指定显示存档的数目,注意将在display设定为incategory或postincategory时方起作用,默认值为10。
5.$orderby,设定存档的排序方法,只能设置为DESC或ASC,设置其它值会报错。默认是降序’DESC’。
6.$separateby,设定发布时间和存档标题之间的隔离代码,默认为’ | ’,即空一格,然后一个竖杠和空格。
7.$show_comment_count,布尔值。指定是否显示评论数目,默认为false,关闭,设定为true后,将在标题后显示:(评论数目)。
8.$show_date,布尔值。指定是否显示发布时间。默认为false,关闭,设定为true后,将在标题后显示发布时间。配合$dataformat,用于设定时间格式。
9.$tag,指定tag的名称,多tag之间用半角逗号’,'隔开,如tag=’wordpress,plugin,hacks’。
10.$timeformat,配合$display=’time’,用于指定时间单位,支持php默认时间格式。默认为$timeformat=’M.Y’。即显示Nov.2007,按月为单位,如$timeformat=’Y',则按年为单位显示存档。点此查看更多php的时间格式。
html代码以及CSS
本插件生成的代码通过W3C XHTML 1.0 Transitional验证。
基本上生成的是<ul class=”wp_list_posts_(display的值)”><li></li></ul>这样的嵌套代码。如,当display为”postincategory”时的代码为:
<ul class=”wp_list_posts_postincategory”><li></li></ul>
当display为time或category时,生成的时间名称和目录名称用<h3>包围。
当display为tag,即显示含有指定tag的存档时,默认第一个<li></li>的内容是:
最后更新于:最新存档的发布日期。
如果您想修改这句话内容,请用文本编辑器打开Lang\zh_CN.php,找到$Lang['LastUpdated'],然后修改2个单引号之间的内容
请网友根据class来自行定义css内容。至于css方面,我是不大熟,或者说是很烂。基本上靠碰运气来解决排版。
插件下载
wp_list_posts.zip
zip- File
21. Nov 2007 (640Hits)
拟解决问题
本是想将插件的问题解决后,再发布的,但是在论坛上已经答应了网友。所以还是先发布出来,存在的一些问题,等过些日子慢慢来解决。
1.对于显示含有指定tag的存档处理上的代码不够理想。
2.尚不支持生成基于category的永久链接。
最后,插一句话,使用该插件的时候,多测试下这些参数,因为种类比较多。
再则,有什么bug或建议,欢迎在此留言。发布此插件后,要全身心投入一篇会议论文的写作了。估计Blog也会暂时歇一歇了。WP论坛我还是会照来的。
写这个插件的同时,也趁机会了解了下WP的数据结构。本来打算写一个系列文章,剖析WP数据库,来专门介绍下心得,而且将数据库的结构图也画好了,但看来也得拖后。也得等正事完成之后再说吧。
47.2011.06.19.3:57.pm. 蜗牛: Hi,老兄你的插件是不是不支持WP3.1.3啊?怎么我按照你是调用方式把代码放到archive.php里面,无论我直接用默认代码还是定义代码都没有任何反应啊,我的代码 我是想调用按照类别的存档,求解答,谢谢了。
46.2010.12.11.11:36.pm. fayme: 请问如果想以图片加标题名称的方式显示,该如何调用?
45.2010.08.20.6:52.pm. vken: 另外如果修改成使用category_nicename的话需要如何操作?因为如果分类名称中间有空格的话,而又在文章标题前加了根据分类添加标题图片的话将使图片失效。谢谢!
44.2010.08.20.11:38.am. vken: 请问怎么才能显示某分类下所有子分类的文章列表?目前这个插件只能单一显示某分类的文章但不能显示该分类下所有子分类的文章。
43.2010.07.13.3:29.pm. 三款显示同一分类文章的wordpress插件 | 只言片语: [...] 第二款显示同一分类文章的wordpress插件:wp ist posts。 国人的作品,支持wordpress2.3。使用方法也很简单,参照作者的说明就行了。用途非常多: 1. 支持按目录显示存档。 2. 按时间显示存档,可按年,月,日来显示。且可指定时间格式。效果可见我站上的存档页面,是按月份(M Y)生成的。 3. 显示含有指定tag(标签)的存档。支持多标签。可用于自动生成系列文章等。效果见本站内的几个专题页面。 4. 显示指定目录下的存档。 5. 显示同一目录下的存档。可用于同一目录下的相关文章显示。 6. 支持自定义是否显示评论数或发布时间。 7.采用自建函数生成文章链接(永久链接)。大大减少数据库查询。目前还不支持含有目录名的永久链接格式。在今后的升级中再来解决这个问题。 [...]
42.2010.05.22.1:57.pm. abdullah.okm: Its really superb.It is helping me solve the most issues in my blog. Thanks.Keep Developing.
41.2010.05.03.8:18.pm. 显示同一分类文章的3个wordpress插件 | VeryOK中文交汇平台: [...] Posts from Cat plugin for WordPress的有点是简单,但同时这也是缺点——可定制性太差。同一分类下面的文章只能显示在文章后面,没办法显示在别的地方。 显示同一分类文章的wordpress插件:wp ist posts。 [...]
40.2010.01.26.2:51.pm. klniu: 对了,如果链接能在新标签页或者窗口打开就更好了,谢谢你的插件,省了我不少功夫
39.2010.01.26.2:49.pm. klniu: 这个插件有个小问题,会找不到文章的真正链接,是 get_option('home')和get_option('siteurl')的问题,前者是真正的博客地址,后者是wordpress的安装地址,对于博客不在根目录安装的就会出错。
38.2009.11.13.8:10.pm. 三款显示同一分类文章的wordpress插件 – 【KWE的博客】: [...] Posts from Cat plugin for WordPress的有点是简单,但同时这也是缺点——可定制性太差。同一分类下面的文章只能显示在文章后面,没办法显示在别的地方。第二款显示同一分类文章的wordpress插件:wp ist posts。 [...]
37.2009.05.18.12:23.pm. 好天山: 俺也来凑凑热闹,给这个插件添加了一个title输出的开关:
$defaults = array(
………………
'show_title' => false,
);
因为偶需要不带标题输出的结果,
36.2009.01.11.10:05.am. 山之岚: @天下农 唉,这问题问得。邮件上面不是有该插件的链接到wp官方插件库的下载地址吗?点击过去后,你就接着会点回这里了,因为那是我的另一个插件。 p.s,wp_list_post是很早为2.3写的一个插件,一直都没有更新。貌似简单,但是根据不同的参数调用,功能还是蛮多的。具体看本文的说明。
35.2009.01.11.2:32.am. 天下农: 请问山之岚,你回复留言后自动给评论者发邮件通知,用的是哪个评论插件?
34.2009.01.11.2:30.am. 天下农: ok 谢谢 调出来了 http://yofen.org/list
33.2009.01.10.11:08.pm. 山之岚: @天下农 按目录排列在2.7下也测试通过,如调用代码:
32.2009.01.10.10:07.pm. 天下农: 谢谢 用已经实现了按月份排列,不过我更想按目录来排列。 试着用display=category,调用出来的还是月份?
31.2009.01.10.12:51.pm. 山之岚: @天下农 这个页面也就是用wp_list_post插件生成的。我的wp是2.7的。调用函数为:
30.2009.01.10.7:46.am. 天下农: 这个插件在2.7下无法使用。 http://www.thinkagain.cn/blogarchives 这个页面是如何实现的呢?
29.2008.12.31.6:21.pm. - 显示同一分类文章的wordpress插件【联讯网】: [...] wp ist posts [...]
28.2008.11.15.7:19.pm. 小肚生鱼汤: 过来看看。。可以更新了点东西拉
27.2008.10.12.10:39.am. Javcin’s Attitude » 各种各样文章列表我的post-list-plugins: [...] 详细使用方法:点击进入 [...]
26.2008.05.28.2:25.am. 显示同一分类文章的wordpress插件–sb123: [...] wp ist posts [...]
25.2008.05.16.9:59.am. 山之岚: To 俞昊然: Sorry,这个插件比较简单,separateby只能用于设定评论数目和时间之间的隔离代码。如果你想设定标题前和发布时间后的代码,需要你自己修改下源代码了。
24.2008.05.14.11:22.pm. 俞昊然: separateby设定发布时间和存档标题之间的隔离代码,那么我想在存档标题前和发布时间后分别加代码又该怎么办呢? 模板标签使用的通则在这里并不适用啊……
23.2008.05.13.12:13.pm. 山之岚: To 俞昊然: sorry,没能准确理解你的问题。
22.2008.05.12.11:51.pm. 俞昊然: 调用时候实现你用的 » Wordpress插件:whole_feed_output v0.1 (1) 中"» "的前置,直接写好像不行,怎么办? 谢谢!
21.2008.02.28.6:59.pm. 山之岚: To escapel:可以做到。例子里面不就有么。你的思路也是正确的。
20.2008.02.28.6:06.pm. escapell: 这个插件能不能再页面上调用分类,我想建一个页面 比如xx页面,然后再这个页面上集中调用一个分类 比如 yy,其他的分类不调用,只要写一个文章是yy分类的,这个页面就像首页一样自动调用 这个插件可以做到吗?或者你知道如何做吗?
19.2008.02.28.6:03.pm. escapell: 这个插件能不能用在wp页面模板上,我想建一个页面 比如 xxx页面 ,然后在这个页面上集中调用一个分类 比如yy 其他分类不调用 。也就是说 只要你打开xxx页面,就显示所有yy分类的内容 就像首页一样。 这个插件能吗?
18.2008.01.15.9:27.am. 摇钱树鞋图世界 » Blog Archive » 三款显示同一分类文章的wordpress插件: [...] Posts from Cat plugin for WordPress的有点是简单,但同时这也是缺点——可定制性太差。同一分类下面的文章只能显示在文章后面,没办法显示在别的地方。 第二款显示同一分类文章的wordpress插件:wp ist posts。 [...]
17.2008.01.10.8:37.pm. wordpress: wordpress这个程序的让我们大家提供了越来越好越来越全面的平台,插件让其的功能更为强大,希望有更多好插件诞生,感谢作者。 小哀
16.2007.12.29.4:02.pm. daifo: 找他好久了,非常感谢!辛苦了
15.2007.12.27.1:27.pm. 显示同一分类文章的wordpress插件 | MyGoGou: [...] Posts from Cat plugin for WordPress的有点是简单,但同时这也是缺点——可定制性太差。同一分类下面的文章只能显示在文章后面,没办法显示在别的地方。 显示同一分类文章的wordpress插件:wp ist posts。 [...]
14.2007.12.25.6:47.am. WP(wordpress)升级到2.3.1以及Tag问题解决方案 at 游戏的人: [...] 另两个想尝试还没来得及尝试的插件:水煮鱼推荐的相关文章生成插件,以及Think Again提供的生成存档页面的插件。看起来都很不错~ [...]
13.2007.12.14.9:19.am. 山之岚: 站内搜索是google ajax search api来实现的。具体可见,http://www.thinkagain.cn/archives/722.html。至于插件作成悬浮菜单,个人觉得还没有必要,只是一个很简单的将文章标题列表输出而已。不用做得那么复杂吧。
12.2007.12.13.1:51.pm. zEUS.: 使劲顶! 学习ing... 博主的 存档页面 长了点,能不能 $limit=5 篇之后给一个“更多”按钮,把它做成悬浮菜单以显示其余的文章呢? 另外搜索功能真cool,是ajax弄的吗?博主能介绍一下吗? 膜拜ing...
11.2007.12.06.6:02.pm. ivan: 找一個插件
10.2007.12.05.6:29.am. 三款显示同一分类文章的wordpress插件 - 博客联盟: [...] Posts from Cat plugin for WordPress的有点是简单,但同时这也是缺点——可定制性太差。同一分类下面的文章只能显示在文章后面,没办法显示在别的地方。 第二款显示同一分类文章的wordpress插件:wp ist posts。 [...]
9.2007.12.04.11:00.am. 山之岚: 这个插件仅适合用于2.3以上。 。我在标题中已经标明了。 你可以通过调用“ incategory”或“postincategory”参数来生成分类的列表。目前这个版本还不能支持显示摘要,不过升级版本已经将此功能纳入了,且可设置摘要长度。摘要会通过链接的title来显示,即将鼠标移到链接上会显示摘要内容,具体效果可见此。
8.2007.12.04.10:39.am. FanZy: 谢谢lx 我的问题是用wp2.2.x测试次插件 我悔过…… 现在我遇到一个问题就是,如何显示某一分类文章列表及其摘要?
7.2007.11.28.10:06.pm. 山之岚: To FanZy,抱歉回复晚了,貌似调用参数可能有点问题,你可以将调用代码贴在这里参考下。再则,该插件的升级版本已经制作完毕,准备近日放出。或者你届时再次测试下。
6.2007.11.27.4:30.pm. FanZy: 显示结果为WordPress database error,具体错误提示为 [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', wp_posts, WHERE .name = 'cata01' AND .term_id = .term_id A] SELECT DISTINCT ID, post_content, post_title, post_date, comment_count, post_name FROM ,, wp_posts, WHERE .name = 'cata01' AND .term_id = .term_id AND .term_taxonomy_id = .term_taxonomy_id AND .object_id = wp_posts.id AND wp_posts.post_type= 'post' AND wp_posts.post_status = 'publish' ORDER BY post_date DESC LIMIT 10 怎么办?
5.2007.11.26.10:48.am. 山之岚: 自己写有意思。还可以深入了解下wp的数据库。
4.2007.11.26.10:41.am. sofish: ...不好用一个xhtml sitemap 的template不是更好...免得写一个插件...你说是不是...哈哈...
3.2007.11.23.1:36.pm. Denis: ThinkAgain 越来越强悍了! PS 留言框也使用了提示?
2.2007.11.22.10:13.am. Shaoqing: 功能强大,赶明也装一个
1.2007.11.22.1:26.am. Alan: 好强的插件,不错
推荐阅读
2009.01.03.4:57.pm. Wordpress插件: WP Smilies (49)
2008.08.25.11:06.pm. Wordpress插件: Mail To Commenter v1.3.2 (387)
2008.08.15.3:30.pm. Wordpress插件: Hot Friends v1.4.1 (223)
2007.12.09.12:12.pm. Wordpress插件:whole_feed_output v0.1 (2)
2007.11.15.8:07.pm. Wordpress Plugin:wp_welcomMsg v0.21 (19)
2007.10.31.10:12.pm. Wordpress插件:wp_addbookmarks 0.21 (56)
2007.10.26.2:51.pm. Wordpress2.3插件:tags2metakeywords 0.31 (4)
2007.06.02.6:00.pm. 文件下载管理插件WS DOWNLOADMANAGER 1.0中文语言文件 (19)
Copyright © 2013 | Think Again | 原文链接