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还是非常值得研究的。
阅读余下内容