如何在使用WP_USE_THEMES=FALSE时显示管理栏?

时间:2013-05-02 作者:Spartacus

因此,我以“无主题”的方式使用WordPress,即不使用“博客”模板。我的站点文件位于根目录中(不在主题文件夹中),WordPress安装在自己的目录中/wordpress/ 目录“我的主题”存在的唯一目的是定制后端,包括重新标记和自定义帖子类型。(我基本上不使用插件和小部件,而是定制WordPress的实现)

通过这种设置,当我的客户像往常一样查看前端页面时,有没有办法让管理栏显示出来?

注意:我已尝试添加wp_head()wp_footer() 无济于事。我想这可能与我的自定义文件结构有关。

2 个回复
SO网友:Ralf912

require_once \'wordpress/wp-load.php\';
wp_footer();
可能您必须从页脚文件中删除一些内容(例如,由WordPress提供支持)。具有var_dump( $wp_actions ); 您可以查看执行了哪些操作(操作挂钩列表)。和var_dump( $wp_filter[\'wp_footer\'] ); 您可以看到为特定钩子注册了哪些操作(此处wp_footer).

SO网友:Dave Romsey

如果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?

结束

相关推荐

ADD_TIME_SUPPORT(‘admin-bar’)导致致命错误

我正在努力学习更多关于主题开发的知识,所以我创建了自己的主题,除了添加functions.php 并尝试用一些简单的方法进行更新,如:<?php add_theme_support(\'admin-bar\', array(\'menus\')); ?> 我明白了Server 500 ERROR 我无法访问Wordpress的任何部分,甚至连仪表板都无法访问。但一旦我删除functions.php 和刷新页面我的Wordpress又回来了,工作顺利。有什么神秘的fu