“网络前沿”目录存档

WordPress 2.8 中的八大亮点

2009年06月14日,星期天

WordPress 2.8 今天上午已经正式发布了。我们 WPChina.org 也根据此办法发布了相应的 WordPress 2.8 中文版。WordPress 2.8 到底有哪些吸引网友的新功能呢?我们来看看 WordPress 官方网站的介绍。

WordPress Codex 列出了 WordPress 2.8 的八大主要亮点:

1. 新增挂件(Widget)拖拽功能,和挂件接口函数(Widget API)
WordPress 挂件(Widget)功能越来越强大,使用挂件可以减少侧边栏的编码,更便于非程序员网友的使用。

在 WordPress 2.8 中,挂件管理这块增加了拖拽功能,并增加了挂件接口函数方便开发者。

2. 主题和插件编辑器支持语法高亮和函数查询功能
增加语法高亮之后,WordPress 2.8 在后台对主题和插件进行修改将更加方便。

3. 支持从 WordPress 后台浏览主题目录、安装主题
WordPress 主题目录是 WordPress 官方的主题站,和他的插件目录一样,拥有大量的优秀资源。WordPress 2.7 版本里,集成中在后台浏览插件目录、安装插件的功能;在 WordPress 2.8 版本中,又增加了浏览主题目录、安装主题的功能。浏览和查询功能十分强大。

4. 支持 WordPress 控制台挂件栏数
WordPress 控制台早已经挂件化(Widget),用户可以方便地添加、删除相应的挂件。在上一版本(WordPress 2.7)中,WordPress 后台采用了新的后台设计方案,更好地支持宽屏。现在这一功能在 WordPress 2.8 中有了进一步的应用,你可以自己设置控制台挂件的栏数。

不过,如果你的显示器不够大,或者不是宽屏,还是默认的2栏结构比较合理。

5. 可配置每页显示的文章/页面/评论的数目
这一点也是比较人性化。现在的上网设备越来越丰富,从智能手机、PDA,到上网本、笔记本,再到屏幕越来越大的台式机,可视面积相差太大。WordPress 2.8 允许用户自定义每页显示得文章/页面/评论数,可以在不同的上网设备下都有比较好的显示方案。

6. 支持自动调整夏令时和时区设置
夏令时对于很多中国人来说,似乎早已成为记忆。对于国内网友来说,这一功能并不重要。

不过在美国大多数州和美洲的不少国家,都有采用夏令时。WordPress 2.8 版本加入了对这一功能的自动支持。同时,还增加了数百个城市,供用户自行选择对应时区。

7. 支持 IIS 7.0 下链接重定向
看来许多使用 Windows 服务器 + IIS 7 的网友,也可以使用干净的永久链接结构了。不错。

8. 通过脚本压缩加快了管理后台的载入速度
对于许多抱怨 WordPress 后台打开太慢的网友,这是一个好消息。当然,实际的速度如何,还有赖于实践的检验。

WordPress 2.8 八大亮点,确实大部分还都不错的。尤其是主题和插件编辑器支持高亮功能,在后台直接查询和安装主题,以及后台载入速度的加快,都可以很好地提升 WordPress 使用效率,改善用户体验。

当然,WordPress 2.8 (下载)的改进并不局限于此。如果你觉得 WordPress 2.8 有什么亮点,或者有哪些让你满意的改进,也欢迎记录下来,和我们来一起分享。

WordPress模板技术手册

2009年06月14日,星期天

本文以技术手册的方式简单汇总WordPress模板的基本资料,希望能对朋友们有所助益。

WordPress基本模板文件
一套完整的WordPress模板应至少具有如下文件:

style.css : CSS(样式表)文件
index.php : 主页模板
archive.php : Archive/Category模板
404.php : Not Found 错误页模板
comments.php : 留言/回复模板
footer.php : Footer模板
header.php : Header模板
sidebar.php : 侧栏模板
page.php : 内容页(Page)模板
single.php : 内容页(Post)模板
searchform.php : 搜索表单模板
search.php : 搜索结果模板
当然,具体到特定的某款模板,可能不止这些文件,但一般而言,这些文件是每套模板所必备的。
基本条件判断Tag

is_home() : 是否为主页
is_single() : 是否为内容页(Post)
is_page() : 是否为内容页(Page)
is_category() : 是否为Category/Archive页
is_tag() : 是否为Tag存档页
is_date() : 是否为指定日期存档页
is_year() : 是否为指定年份存档页
is_month() : 是否为指定月份存档页
is_day() : 是否为指定日存档页
is_time() : 是否为指定时间存档页
is_archive() : 是否为存档页
is_search() : 是否为搜索结果页
is_404() : 是否为 “HTTP 404: Not Found” 错误页
is_paged() : 主页/Category/Archive页是否以多页显示
Header部分常用到的PHP函数

: 博客名称(Title)
: CSS文件路径
: PingBack Url
: 模板文件路径
: WordPress版本
: Atom Url
: RSS 2.o Url
: 博客 Url
: 博客网页Html类型
: 博客网页编码
: 博客描述
: 特定内容页(Post/Page)的标题
模板常用的PHP函数及命令

: 调用Header模板
: 调用Sidebar模板
: 调用Footer模板
: 显示内容(Post/Page)
: 检查是否存在Post/Page
: 如果存在Post/Page则予以显示
: While 结束
: If 结束
: 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册
: 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开
: 内容页(Post/Page)标题
: 内容页(Post/Page) Url
: 特定内容页(Post/Page)所属Category
: 作者
: 特定内容页(Post/Page) ID
: 如果用户已登录并具有权限,显示编辑链接
: 显示Blogroll中的链接
: 调用留言/回复模板
: 显示Page列表
: 显示Categories列表
: 下一篇文章链接
: 上一篇文章链接
: 日历
: 显示内容存档
: 导航,显示上一篇/下一篇文章链接
: 嵌入其他文件,可为定制的模板或其他类型文件
与模板相关的其他函数

: 输出相应信息
: 显示注册链接
: 显示登录/注销链接
: 将当前内容分页
: 将当前内容截断,以不在主页/目录页显示全部内容
: 网页加载时间(秒)
: 网页加载查询量
更详细的信息请参考WordPress官方文档。

如何打造WP博客的镜像?

2009年06月10日,星期三

在Wordpress中文论坛上曾看到一网友的帖子,讨论如何建立博客镜像的问题。要求不同地址的WP博客可以显示同样内容,其中一个博客负责帖子的管理,而镜像博客只负责内容输出。既然要求是镜像,所有内容都需自动完成,所以利用Live Writer等编辑软件分开发布等手法都不属于讨论范围之内。稍微分析一下,实现博客镜像并非不可能,其中涉及二个方面的问题。 

一是数据库问题。因为Wordpress的主要内容和配置都放置在数据库内,而页面内容都是动态查询数据库生成的。所以只要能够共享到数据库。镜像问题就可以解决了。

二是永久链接问题。因为主博客和镜像博客的地址是不一样的,所以要求Wordpress博客内的文章,目录,页面等浏览用的永久链接都是根据各自的地址动态生成的。而正因为WP的链接是动态生成的特性,如果能有效利用的话,此问题也就不再是问题了。

 

我个人对建立博客镜像并不以为然,然而作为WP的Fan,从技术方面探讨其可行性倒是蛮有兴趣。在论坛上看此讨论后,我在本地做了个测试,结果发现,仅需简单地利用wp-config.php对相关选项定义后,完全可以实现二个博客之间的同步。下文中将以主博客和镜像博客用以区分二个博客。

前提

根据上面分析的二个方面,要实现镜像,假设下列前提都必须得以满足。 

1. 数据库可以共享。镜像博客必须共享主博客的数据库,所以在wp-config.php中,二者对应的数据库名,帐号和密码必须完全一致。如果镜像博客和主博客位于同一主机上的话,也不存在数据库地址的问题了,(通常都为localhost)。若二者位于不同主机,主博客的数据库必须支持远程登录,否则的话就无法实现镜像。

2.为了保持一致,镜像博客的wordpress目录结构和文件必须完全和主博客一致。即模板文件,插件文件以及.htacess文件必须全部一样。但因为WP是用绝对地址来设置文章中图片和附件等,所以镜像文件可以不需要建立那些在主博客中保存图片或附件的目录。通常是\wp-content\uploads。

步骤 

1. 建立镜像博客,将wp文件上传到镜像博客的wp目录,然后将主博客中使用的模板以及插件分别上传到镜像博客的相关目录下。注意,目录结构和模板插件文件必须相同。我是用xampp搭建本地服务器,然后在本地调试的,在本地下分别建立了wp251和mirror目录,使用wp官方2.5.1版程序。前者的url为:http://localhost/wp251,设定为主博客。后者url为:http://localhost/mirror,作为镜像博客。

用phpmyadmin建立一个数据库wp251,并将现有ThinkAgain博客的数据备份导入。

2. 设置wp-config.php 

用文本编辑软件如notepad++打开主博客wp251的wp-config.php,设定其数据库参数和定义wp和博客的绝对地址。如下图,点击可查看大图:

主博客wp-config.php部分内容

设定主博客的数据库为wp251,用户名和密码为root和123456,定义了主博客的wp安装目录的绝对地址(WP_HOME)为http://localhost/wp251;博客的地址(WP_SITEURL)为http://localhost/wp251。注:主博客可不定义wp地址和博客地址。 

接着编辑镜像博客mirror的wp-config.php,如下图:

镜像博客的wp-config.php部分内容

可以看出,该wp-config.php将镜像博客的数据库设定为和主博客一样,均为wp251,用户名和密码为root和123456。也就是说镜像博客将共享使用主博客的数据库,这是问题一的解决方法。 

但注意定义了镜像博客的wp地址为http://localhost/mirror;博客的地址为http://localhost/mirror。这是其不同之处。由于WP_HOME和WP_SITEURL是全局变量,这样即使数据库中的定义的WP安装和博客地址为http://localhost/wp251,而Wordpress在运行中将会使用http://localhost/mirror来生成永久链接。这样就解决了问题二。

通过wp-config.php指定二者的位置后,在后台的设置页面可以发现,这二个选项将会以灰色显示,无法编辑。

镜像博客后台

p.s,wp安装目录和博客目录分别被保存在数据库中wp_options表的第40项,在wp_options第1项。

3.更新.htacess文件

即使已经将主博客的.htacess上传到镜像博客的wp根目录下,仍需要到镜像博客的后台重新更新下永久链接。注,无需修改链接格式,仅点击更新按钮即可。 

4.查看效果

分别打开主博客或镜像博客的页面,对照下面2个抓图,可以看到二者界面和内容完全一致。但地址和链接等是不一样的。图中红色方框处。

主博客抓图

主博客抓图

镜像博客抓图

镜像博客抓图 

只要在镜像博客\wp-content\plugins下上传有相同插件。镜像博客也可以完全正常使用插件。上图右边红色方框处是插件生成的代码,这个是我的wp_addbookmarks插件生成的。新添加了半透明的css效果。

到此为止,二个网站已经基本实现同步了。无论是在线或者利用离线编辑软件如live writer等往主博客发表文章后,镜像博客将会立即输出同样内容。因为它们共享同一个数据库来输出内容的。

可以在主博客管理博客的设置,因为共享数据库,所以所做的设置更改也会立即在镜像博客上有效。如果涉及文件修改等,请务必修改镜像博客中的相应文件。 

讨论-可能存在的问题

即使成功地将二个博客同步,但仍可能存在些问题。主要为插件方面的兼容性问题。因为插件的涉及面太广,所以我没有去测试过,只能在这里提出一些来互相探讨。

1. 一些涉及永久链接管理的插件,如链接转向,或自定义链接等插件可能无法正常运行在镜像博客上。 

2. 博客的统计问题,涉及博客统计的插件,如postview等,将会同时统计二个博客的页面浏览状态,所以在页面显示的浏览量等为主博客和镜像博客的浏览量的总和。

3. 涉及数据库读写或管理的插件可能会不正常。按理来说,虽然镜像博客的插件在运行中会往数据库中写东西不会影响到主博客的运行,但是要注意,如果往数据库内写入含有站点永久链接的内容,那么将会出现问题。因为二个站点的永久链接是不一样的。而数据库内使用同样的永久链接,会造成链接指向絮乱。

4.RSS输出问题,二个博客的rss内容虽然一样,但是需注意主博客和镜像博客的wordpress默认的输出feed地址是不一样的。所以如果在模板中调用wp自带函数用于rss订阅地址输出的话,可能会导致分散了订阅者。这个问题可以通过整合feed地址来解决。将主博客的feed地址提交给feed管理的站点,如feedburner或feedsky,然后在模板中只放置feed管理站点提供的整合后feed地址就可以了。 

本文是我根据本地测试的结果总结出来的。用于抛砖引玉,实际建立远程镜像的步骤大同小异,但涉及具体的问题,如插件等,需要根据自己的实际情况而定后再分析解决。为此,建议先在本地测试下,然后再做定夺。 :razz:

  • 您当前正在浏览 网络前沿 分类目录的存档。