Панель администратора (панель инструментов) не отображается в пользовательском файле PHP, который загружает WordPress

Я сделал свою собственную страницу PHP и использовал ее как часть моего сайта WordPress. Я использую некоторые функции WordPress и хочу, чтобы он полностью интегрировался с самим WordPress.

Хотя я загрузил WordPress, панель администратора не загружается в верхней части страницы. На самом деле это даже не отображается в структуре HTML (я пытался найти Ctrl + f для wpadminbar , никаких результатов.)


Что я наделал –

1. Включенный файл WP

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

2. Добавлен wp_head ();

Прямо перед </head>

2. Добавлен get_header ();

Сразу после <body>

3. Добавлен wp_footer ();

Прямо перед </body>


Также попробовали:

show_admin_bar (истина);

get_footer ();

Если WordPress загружается извне основных файлов WordPress с использованием отдельного PHP-скрипта, который включает 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 , то WP_USE_THEMES 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> 

Подробнее о загрузке WP с помощью внешнего файла PHP: Каков правильный способ использования функций WordPress вне файлов WordPress?