WordPress里各种action的执行顺序

WordPress作为博客系统/内容管理系统,之所以深受广大用户/企业的喜欢(超过70%的网站都是使用Wordpress),一大原因就是它允许二次开发人员自定义/修改其各个方法,从展现到数据输出,从内部管理到外部接口,程序员可以发挥自己的想象力,最大程度的实现自己个性的自定义Wordpress运用。

WordPress之所以能提供这样灵活的二次开发能力,一大途径就是它里面内涵了各种各样的action/filter,通过这些action/filter,你可以在Wordpress运行的各个环节来修改缺省的Wordpress行为、表现和事件。

最近我在开发一个Wordpress皮肤时,想让post根据它的类别(category)或标签(tag)来自动选择正确的显示模板,我并没有在一个模板里使用判断语句来输出不同的模块代码,而是让不同的类别(category)或标签(tag)使用单独的模板。实现的过程中,发现这其中有很多action/filter可以使用,但这些action哪个先调用?哪个后执行,我经常会用错,毕竟里面的action/filter太丰富了。

为了方便我记忆,也给遇到跟我一样困难的朋友们一些提示,下面是我在网上找到的各种wordpress action的执行顺序:

  • muplugins_loaded
  • registered_taxonomy
  • registered_post_type
  • plugins_loaded
  • sanitize_comment_cookies
  • setup_theme
  • load_textdomain
  • after_setup_theme
  • auth_cookie_malformed
  • auth_cookie_valid
  • set_current_user
  • init
  • widgets_init
  • register_sidebar
  • wp_register_sidebar_widget
  • wp_default_scripts
  • wp_default_stypes
  • admin_bar_init
  • add_admin_bar_menus
  • 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
  • … a lot more

比如,如果你打算在调整一下输出的script的顺序,你应该是使用wp_enqueue_script,而不应该放到init里。所以说,看似好像都可以的做法,细研究起来还是有很大的区别的。不过,Wordpress里的这些action/filter还是非常值得研究的。

阅读余下内容
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号