私は私自身のPHP pageを作成し、それを私のWordPress Webサイトの一部として使用しました。私はいくつかのWordPress機能を使用していて、WordPress自体と完全に統合させたいです。
WordPressをロードしましたが、管理バーがページ上部にロードされていません。 実際にはHTML構造でさえ表示されません(私は検索しようとしました Ctrl+f wpadminbarの場合、結果はありません。)
私がしたこと -
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
</head>
の直前
<body>
の直後
</body>
の直前
また試してみました:
wp-load.php
を含む別のPHPスクリプトを使用してWordPressがメインのWordPressファイルの外部からロードされた場合、/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がwp-blog-header.php
をインクルードして外部の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>
外部のWPファイルを使用してPHPをロードする方法の詳細: ワードプレスファイルの外側でワードプレス機能を使用する正しい方法は何ですか?
私は本当にDave Romseysの回答が好きですが、あなたがもっぱら管理者バーを欲しがっているなら(元の質問のように)少しスリムになることができると思います。
Wp-blog-header.phpの中には、次のものがあります。
do_action( 'template_redirect' );
あなたがあなたのカスタムphpアプリケーションヘッダにそれを追加するならば、あなたは管理バーを得るでしょう。 Daveの方法を使用したときに404テンプレートを取得していたので、これはあなたにとってよりうまくいくかもしれません。