WordPress插件开发常用Action接口

进行WordPress开发的前提条件是了解WordPress的各种插件接口,其中WordPress最重要的两种接口是Action和Filter。本文将就其中之一Action进行讲解,以便大家掌握WordPress的基本开发方法。

Action即动作,WordPress作为开放性和拓展性最强的Blog/CMS程序,在其自身执行过程中会额外执行由插件插入的函数,以实现插件的目的,这个允许插件开发者自定义在某点执行函数的接口即Action。当一个用户访问WordPress任意页面后,WordPress将按顺序执行每一行代码,并在一定条件下激发Action,执行挂在该Action上的函数。

简单范例

当访客访问localhost/wordpress后,执行的是index.php,即WordPress的入口程序。index.php先后载入一些基本参数(如数据库信息、默认语言),进行一些必要的检查(如WordPress是否已经安装),然后载入我们的插件,当然,前提是这个插件已经启用。在插件中,我们输入以下代码:

1
2
3
4
5
6
add_action('wp_head','print_my_feed');
function print_my_feed(){
 //do something
 echo '<link rel="alternate" type="application/rss+xml"
          title="WP CEO" href="http://wpceo.com/feed/" />'
;
}

如代码所示,wp_head就是一个Action名,当WordPress执行到wp_head这个Action时,它将执行我们插入的print_my_feed函数。这里的函数既可以做某些后台的操作,如update_option,也可以用于前台的输出,如echo,做一些适合在该Action发生的动作。

在这里,print_my_feed函数执行的是输出WPCEO的Feed链接。如果用户使用了Firefox浏览器或新版的IE,在地址栏附近应该能看到一个醒目的订阅图标,提现用户可以订阅该网站。

WordPress常用Action接口

以下是一个普通前台页面的Action执行过程。

muplugins_loaded
plugins_loaded
load_textdomain
set_current_user
init
wp_loaded
parse_request
send_headers
parse_query
pre_get_posts
posts_selection
wp
template_redirect
get_header
wp_head
wp_enqueue_scripts
wp_print_styles
wp_print_scripts
loop_start
the_post
loop_end
get_sidebar
dynamic_sidebar
wp_meta
get_footer
wp_footer
shutdown
对于我们的插件来说,什么时候执行这个动作尤为重要。例如一个需要发送Cookie的函数,它应当在template_redirect之前完成输出Cookie的行为(否则可能会引起PHP错误);一个需要改变默认获取Post文章的Hook,就应当在pre_get_posts这个Action上做出修改;如果我们需要在HTML代码中自行加入样式表,就需要在wp_head这个Action中添加。

除了前台,后台开发也是WordPress插件开发的重点,以下是后台管理界面的普通执行流程。

muplugins_loaded
plugins_loaded
load_textdomain
auth_cookie_valid
set_current_user
init
wp_loaded
auth_redirect
admin_menu
admin_init
parse_request
send_headers
wp
admin_head
adminmenu
admin_notices
admin_footer
shutdown
相比于前台,后台的运行流程中有一些后台独有的Action,如auth_redirect,重定向未登录用户到登录界面;admin_menu是初始化WordPress后台的管理菜单。

Leave a Reply

You must be logged in to post a comment.

RSS feed for comments on this post. TrackBack URL