WordPress插件开发之Action Reference

6 2

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

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

简单范例

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

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执行过程。

  1. muplugins_loaded
  2. plugins_loaded
  3. load_textdomain
  4. set_current_user
  5. init
  6. wp_loaded
  7. parse_request
  8. send_headers
  9. parse_query
  10. pre_get_posts
  11. posts_selection
  12. wp
  13. template_redirect
  14. get_header
  15. wp_head
  16. wp_enqueue_scripts
  17. wp_print_styles
  18. wp_print_scripts
  19. loop_start
  20. the_post
  21. loop_end
  22. get_sidebar
  23. dynamic_sidebar
  24. wp_meta
  25. get_footer
  26. wp_footer
  27. shutdown

对于我们的插件来说,什么时候执行这个动作尤为重要。例如一个需要发送Cookie的函数,它应当在template_redirect之前完成输出Cookie的行为(否则可能会引起PHP错误);一个需要改变默认获取Post文章的Hook,就应当在pre_get_posts这个Action上做出修改;如果我们需要在HTML代码中自行加入样式表,就需要在wp_head这个Action中添加。

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

  1. muplugins_loaded
  2. plugins_loaded
  3. load_textdomain
  4. auth_cookie_valid
  5. set_current_user
  6. init
  7. wp_loaded
  8. auth_redirect
  9. admin_menu
  10. admin_init
  11. parse_request
  12. send_headers
  13. wp
  14. admin_head
  15. adminmenu
  16. admin_notices
  17. admin_footer
  18. shutdown

相比于前台,后台的运行流程中有一些后台独有的Action,如auth_redirect,重定向未登录用户到登录界面;admin_menu是初始化WordPress后台的管理菜单。

Action接口函数解析

在之前我们已经学习了add_action这个函数的基本使用方法,现在来介绍一下它的具体使用方法和其他Action函数的使用方法。

add_action('action_name','my_function_name',$priority=10,$accepted_args=1);

前两个参数即要插入的Action和需要插入的函数,$priority为载入顺序,例如同样是wp_head这个Action,可能有数个插件都需要在这里加载自己的CSS或JavaScript文件,WordPress载入时会按照从小到大的顺序载入。同一个Action下,$priority越小越早执行。$accepted_args 为接受的参数,默认为一个,如果某Action提供了多个参数,则需要修改这个数值。

remove_action('action_name','my_function_name',$priority=10,$accepted_args=1);

有添加就需要有删除,remove_action就是删除挂载在Action上的函数。

do_action('action_name', $arg );

执行Action,除了系统会执行固定的Action,我们在插件中也能创建自己的Action。$arg为传入的参数,这里的参数可以为数个。

小结

本文比较具体地描述了Action的使用方法,并将在其他文章中结合具体实例,进一步扩展本文。

分类:WordPress开发 | 标签:, ,

2 Responses to WordPress插件开发之Action Reference

  1. Pingback: WordPress插件开发之Filter Reference | WP CEO

  2. 柳城 says:

    这模板倒是不错…

Leave a Reply

Your email address will not be published. Required fields are marked *