加载WordPress的自定义PHP文件上未显示管理栏(工具栏)

时间:2016-09-21 作者:jmeinlschmidt

我做了my own PHP page 并将其作为我WordPress网站的一部分。我正在使用一些WordPress函数,希望它与WordPress本身完全集成。

虽然我已经加载了WordPress,但管理栏并没有加载到页面顶部。It actually doesn\'t even show in HTML structure (我试图在Ctrl+f中搜索wpadminbar,没有结果。)

我所做的-

1。包含的WP文件

require_once($_SERVER[\'DOCUMENT_ROOT\'].\'/wp-load.php\');

2。添加了wp\\U头()

之前</head>

2。添加了get\\u header()

之后<body>

3。添加了wp\\u footer()

之前</body>

也尝试了:

show\\u admin\\u bar(true)

获取页脚()

2 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

如果WordPress是使用单独的PHP脚本从WordPress主文件外部加载的,该脚本包括wp-load.php 然后/template-loader.php 不会加载文件,因此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的内部功能,因此使用它的风险自负

还值得注意的是,如果WordPress是通过以下方式从外部PHP文件加载的wp-blog-header.php 以及WP_USE_THEMES 常量设置为false, 这个template_redirect 钩子不会再次被激发,所以wpse240134_wp_admin_bar_init() 上述函数可用于在以下情况下显示管理栏WP_USE_THEMES 设置为false:

<?php
/**
 * Demonstration  of loading WordPress from an external PHP file.
 * 
 */
define(\'WP_USE_THEMES\', false);

// https://wordpress.stackexchange.com/questions/47049/what-is-the-correct-way-to-use-wordpress-functions-outside-wordpress-files
//require (\'./wp-load.php\');

require (\'./wp-blog-header.php\');

?><!DOCTYPE html>
<html class="no-js" <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo( \'charset\' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="profile" href="http://gmpg.org/xfn/11">
    <link rel="pingback" href="<?php bloginfo( \'pingback_url\' ); ?>">

    <?php wp_head(); ?>
</head>

<body id="body" <?php body_class(); ?>>
    <div id="page" class="site">
        <header id="header" class="site-header"></header>

        <div id="content" class="site-content">
            <h1>Test of loading WordPress from external PHP file</h1>
        </div>

        <footer id="footer" class="site-footer"></footer>
    </div>
<?php wp_footer(); ?>
</body>
</html>
有关使用外部PHP文件加载WP的更多详细信息:What is the correct way to use wordpress functions outside wordpress files?

SO网友:raison

我真的很喜欢戴夫·罗姆西的答案,但我认为如果你只想要管理栏(根据最初的问题),它可以更精简一些。

在wp博客标题内。php您将发现以下内容:

            do_action( \'template_redirect\' );
如果将其添加到自定义php应用程序标题中,您将获得管理栏。在使用Dave的方法时,我得到了一个404模板,所以这可能对您更好。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果