[插件开发]获知文章状态变化
文章(post)是 WordPress 博客的核心价值所在,围绕一篇文章的增、删、改,我们可以开发很多有用的插件。近来,由于维护一款插件的需要,我碰巧研究了一下围绕文章发布流程而设立的一些钩子(hook)。微有所得,记录备查。
事情的起因是插件中的一个函数hook到了一个action上,名字是publish_post,顾名思义,在文章发布时候被激发的。为了要更清楚地掌控这个action,我想在源代码中,把触发点给找出来,这一找,问题来了。理论上,我们hook任何action,WP内部都会有对应的do_action来激发这个钩子,这一次,一搜,根本没有publish_post,那就有点小麻烦,说明具体激发哪个钩子,是运行时决定的,再明白点说吧,这个action的名字,应该使用变量拼出来的,所以我们直接搜publish_post很难找到调用点。
在插件管理页面给你的插件添加“设置”链接
在插件管理页面,每个插件下面有2-3个Action link,包含了用户可以对该插件进行的几种操作。在插件为禁用状态时,可用的操作有:Activate(启用),Edit(编辑),Delete(删除);在插件为已经启用的状态下,默认有两个可用的操作:Deactivate(禁用)和Edit(编辑)。如果我们在这个列表里仔细观察,就会发现,有些插件会多出一个Settings(设置)操作。本文记录了,为插件添加Settings link的方法。没有什么过多的描述,直接放代码了。在插件主要文件中(包含了插件信息注释语句的那个文件),使用下面的代码,就可以为这个插件添加一个Settings link了。
[插件开发]:检测WP插件的运行环境
WP的插件在开发完成后,会在用户的服务器上运行,而用户的服务器环境基本上可以用千奇百怪来形容。开发过程中,在本地运行得好好的插件的,一旦安装到用户的服务器上,也有可能变得无法运行。
所以,作为WP插件的开发者,最好不要对插件最终的运行环境做任何假设。而且,最好能够在插件被启用的时候,进行必要的检查,给用户以提示,对于自己没法兼容的问题,应该明确指出,避免用户遭遇不必要的麻烦。
在我个人的WP插件开发过程中,我主要遇到的问题,基本上都是PHP相关的问题。
[插件开发]:后台管理页面脚本按需加载
插件的后台管理页面的主要功能是协助用户设定插件运行时参数,一般都需要用户进行交互,这就少不了需要客户端脚本的参与(主要是js脚本,当然还有配套的css样式表)。
WP的后台本身就已经加载了许多的脚本,包括各类类库和基础功能的脚本。过多的脚本文件引入,会增加HTTP请求,增加流量,拖慢速度。好在,WP的后台已经采取了相当多的措施,来管理后台加载的脚本。首先是用wp-dependency管理依赖关系,用load-scripts来压缩、并加载脚本,使得各种类库被合并到同一个文件中进行加载,节省了HTTP请求数量和流量。
如何才能按需加载脚本?
本文提出问题,并不解决问题。
我在研究Extended Live Archive(ELA)插件的代码,发现一个问题,这个问题具有一定的共性,而且,我现在也没有什么好的解决办法,所以我把它描述一下,看看有没有高人高见。
怎样撰写Features List
当开发好一款插件的时候,要为插件撰写一个readme.txt文件,这是让用户了解你的插件的最好方式。很多插件都会在readme.txt的第一个section(description)里,附上一个简单明了的features list,以便用户可以快速扫描你插件包含的功能,决定是否选用。那么应该如何撰写features list呢?本文为您介绍。
我不是一个撰写readme.txt的专家,但是我经常需要做这件事情,我自己也很不在行,从来没有仔细研究过这件事情,今天在这里写下的是我第一次研究的笔记。对本文内容的权威性,大家请自己斟酌。
Simple Paypal Donate插件
Simple Paypal Donate是一款在博客中插入捐赠按钮的插件,但是其功能并不尽如人意,本文记录我对这款插件的改进意见。
[WP开发环境]在NetBeans中配置FTP
本文介绍了如何在NetBeans IDE 6.5.1 for PHP中配置FTP,以搭建一个便捷的WordPress 主题、插件开发环境。
WordPress 开发资源
今天刚看到几个WordPress开发资源,觉得很不错~在这里记录一下。
WordPress phpDoc
WordPress内部使用phpDoc的语法进行注释,这是WordPress.org为其生成的文档。
Template Tags(模板标签)使用指南
在WordPress里面,有一类函数,他们被称为Templete Tags,它们相比于普通的函数,有一个共同的特点。本文将为您介绍Template Tags的基本使用方法。
浅析WordPress中的Hook机制
Hook,既可以是动词,表示钩住,也可以是名词,表示钩子。在一个计算机程序中,Hook没有准确的并且合理的中文翻译,很多技术书籍文章,干脆就称之为“钩子”。
Hook机制(就是指Action和Filter的机制)正是WordPress能够有成千上万的插件支持的根源。
尽管我以前可能写过类似的文章来说明这个问题,但是我觉得这个东西是如此的重要,以至于如果你还没有明白什么是Hook,根本算不上走进了WP开发者的世界。又或者说,作为一个普通的玩家来说,深刻地理解Hook,能够帮助您走上DIY博客高速车道。
使用NetBeans IDE 6.5作为WordPress的开发环境
从一个大牛那里看到了介绍NetBeans IDE for PHP的文章,立刻下载下来尝试。立刻被它那强大、便捷、体贴的开发功能所吸引。本文主要介绍我在安装、试用、开发过程中的一些使用体验及感受。
使用Google AJAX Libraries API替换WordPress自带的js库
为了使用方便,WordPress系统内部已经带有了很多的js类库,几乎涵盖了目前市面上流行的所有类库。包括jQuery,prototype,scriptaculous,thickbox等等等等,这些类库用到的重要的插件,也带了不少,到底有多少呢?大家可以去/wp-includes/js目录下查看。
WordPress自带的这些js类库有个弊端,就是基本上都没有经过minify和zip(这两部操作的作用,就是将js代码的体积,尽可能减到最小,以加快下载速度),所以引用WordPress自己的js类库,往往会浪费很多流量(比如,没有zip过的jquery有30KB,prototype有122KB,而压缩过后,jquery只有17KB,prototype只有28KB)。
WordPress插件开发实例--(02)
插件源于需求。——Charles
我有一个私人博客,目前使用的WordPress的development version,该版本可以提供WordPress的一键升级。各位WPer应该是有福了,不过呢,这个一键升级,却给我带来一点小麻烦。
插件开发全攻略(目录)
隔了这么久,终于将这个系列文章都翻译完了,这么一遍走下来,实在觉得自己很浅薄,技术和语言水平都十分有限。恐怕也没有全部传达原作者的意图。
我打算陆续将该系列的文章校对一遍,并且打算将这个系列里面的例子改写成自己的例子,这样,我可以对文章有更准确的理解。
插件开发全攻略(11)---在你的WP插件中使用AJAX
越来越多的插件开始使用AJAX技术。我个人并没有在大多数的插件中看到过AJAX,但是使用AJAX来完成某个任务对你的插件来说可能是必要的。这篇文章将像你展示怎样在你的插件中使用AJAX。
这篇文章将在上一篇文章《在插件中添加js和css》的基础上继续。
插件开发全攻略(10)---在你的WordPress插件中使用Javascript和CSS
现今的许多插件对javascript和层叠样式表依赖更多了。将你插件中的javascript和css放置到分离的文件中是非常重要的,那样做会使插件维护起来更加容易。此系列中的这个部分将介绍怎样在你的插件中加载javascript和CSS文件。
添加你的javascript
插件开发全攻略(08)---构建一个WordPress插件用户面板
将会有这么一种情况,你将有一个主要的管理面板,但是希望能够让独立的用户设定他们自己的偏好。在Devlounge Plugin Series这个例子中,我们添加了一个是否把文字添加到文章末尾的选项。然而,假如一个登录用户不希望看到这段文字呢?为什么不给他们一个选择,而且不影响到所有其他的用户呢?
这篇文章将会涉及到这个问题,让你可以添加你自己的用户面板。
插件开发全攻略(07)---构造一个WordPress插件管理员面板
任何需要用户输入(诸如改变一个变量)的插件,都需要某种管理面板。建立一个管理面板,并不是那么难的,所以,一个插件作者决定不创建管理面板,而是让用户自己去修改PHP代码的行为让我很是苦恼。让一个用户(TA的PHP知识可能是0)去修改代码通常来说不是一个好主意。本文将深入探讨成功地为你的插件创建管理面板,到底需要些什么。
插件开发全攻略(06)---WordPress插件Filter
Filter是一组使得你的插件可以插入来修改文字的函数。被修改的文字通常是要插入到数据库或者显示给终端用户看的。
WordPress Filter允许你修改几乎任何类型的显示文字,而且其功能十分强劲。通过Filter你可以修改文章,feed,怎么样在评论中的作者,还有很多,很多。
为了说明WordPress Filter的用处,我们会继续在已经存在的Devlounge Plugin Series代码上工作。

Most Commented Posts