本文旨在让像我这样的 WordPress 初入门的开发者快速体验怎么写出一个最简单能工作的插件。至于插件的工作原理就不太多说,但基本的还是要懂得,插件中会用 add_action() 或 add_filter() 方法去挂住一些事件,如显示标题、显示内容等事件,然后执行一个函数。
add_action() 意味着某件事情发生了,要做什么事情,add_filter() 意味着事情发生,并传来的数据可对数据进行处理。用 add_action() 还是 add_filter() 就看你实际需求了。
虽然刚开始就声明了不太想多讲插件的原理,但前面几句话却表明的差不多了。立即例子入手吧,比如我们来做一个在每篇文章内容后附加一句版权声明的话。
在 wp-content/plugins/ 目录下新建文件插件文件:CopyrightNotice.php,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php /* Plugin Name: Post Copyright Plugin URI: http://unmi.cc Description: This plugin is used to append a Copyright Notice to the post content. Version: 0.1 Author: Unmi Author URI: http://unmi.cc License: A "Slug" license name e.g. GPL2 */ function copyright_notice($content=''){ return $content .= '<hr><font size=2>All articles contained on this web site is copyright ' .'protected. do not use or copy of them with permission. <b>Unmi</b></font>'; } //用 copyright_notice 函数拦截 the_content hook add_filter('the_content','copyright_notice'); ?> |
说明:
1. 注释中的插件名称 Plugin Name: Post Copyright 这一行是必不可少,否则 WordPress 根本不认识它。其它字段是补充,最好也写上,让它在后台插件列表中好看些。
2. post_copyright() 函数的功能只是在原来文章内容 $content 后附加一句话,该函数参数是由后面 add_filter() 函数中的 hookname 决定的。
3. add_filter('the_content','post_copyright'); 的作用是,在 the_content 事件时,即输出文件内容的时候,用函数 post_copyright 去处理一下内容。就像 C++ 中那样针对 the_content hook 注册一个勾子程序 post_copyright 进行拦截。这里的 the_content 又被叫做 hookname,the_content hook 要用 add_filter() 来注册。什么 hook 用 add_filter(),什么 hook 用 add_action() 注册都是有讲究的。Wordpress 所有的 Hook 列表详见 WordPress Hooks Database,有上千个,其中分明了 action hook 和 filter hook,以及各个 WordPress 版本中 hook 的变迁,恐怕你又无法正常访问这个 hook 列表页面,聪明的你,翻墙吧。
显示,修改,添加,删除什么或等等其他一系列的操作你都可以挂接上自己的程序进行加工处理。
程序写完了,需要安装和激活。因为文件在 wp-content/plugins 目录下,所以只要刷新一下后台的插件列表,就会显示出我们刚刚写的插件:
Post Copyright | This plugin is used to append a Copyright Notice to the post content. | |
Version 0.1 | By Unmi | Visit plugin site |
点击 Activate 把它激就行了,然后到前台就可以看到每篇文章后面都跟了一个版权声明:
Hello world!
All articles contained on this web site is copyright protected. do not use or copy of them with permission. Unmi
这样一个插件就写完了。这个最简单的文件我们只需要一个 php 文件就行了。可是我们一般看过的插件都会很多文件,所以需要把它们安放到一个目录中去,其实即使是一个文件,也为它建立一个目录是受推崇的,这样方便扩展,更整洁。Wordpress 对插件命名很宽松的,只要避免重命,还有就是在插件目录中的挂接 hook 的 php 文件(我暂且叫它为入口文件) 最好是一望便知的。
你要把插件打成 ZIP 压缩包,通过后台来安装也行,这时候就请注意一下压缩包的目录层次,挂接 hook 的 php 程序文件必须是在根目录下或是在第一层目录中。
参考 1. http://codex.wordpress.org/Writing_a_Plugin
2. WordPress Hooks Database
3. Plugin Application Program Interface (API)
4. WordPress Function Reference
本文链接 https://yanbin.blog/my-first-wordpress-plugin/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。