如果WordPress是通过以下方式从外部PHP文件加载的wp-blog-header.php
以及WP_USE_THEMES
常量设置为false
, 这个template_redirect
钩子不会被激发。这很重要,因为template_redirect
是如何在前端初始化工具栏。查看default-filters.php
我们可以看到工具栏的初始化位置:
...
// Admin Bar
// Don\'t remove. Wrong way to disable.
add_action( \'template_redirect\', \'_wp_admin_bar_init\', 0 ); // <-- initialize Toolbar
add_action( \'admin_init\', \'_wp_admin_bar_init\' ); // <-- initialize Toolbar
add_action( \'before_signup_header\', \'_wp_admin_bar_init\' ); // <-- initialize Toolbar
add_action( \'activate_header\', \'_wp_admin_bar_init\' ); // <-- initialize Toolbar
add_action( \'wp_footer\', \'wp_admin_bar_render\', 1000 );
add_action( \'in_admin_header\', \'wp_admin_bar_render\', 0 );
...
可以通过插件或主题添加一个函数来触发工具栏的初始化:
function wpse240134_wp_admin_bar_init() {
_wp_admin_bar_init();
}
add_action( \'init\', \'wpse240134_wp_admin_bar_init\' );
请注意
_wp_admin_bar_init()
被认为是WordPress的内部功能,因此使用它的风险自负
另请参见Admin Bar (Toolbar) not showing on custom PHP file that loads WordPress.
有关使用外部PHP文件加载WP的更多详细信息:What is the correct way to use wordpress functions outside wordpress files?