ti-enxame.com

Barra de administração (barra de ferramentas) não mostrando no arquivo personalizado PHP que carrega o WordPress

Eu fiz minha própria PHP página = e usei como parte do meu site WordPress. Eu estou usando algumas funções do WordPress e quero tê-lo totalmente integrado com o próprio WordPress.

Embora eu tenha carregado o WordPress, a barra de administração não está carregando no topo da página. Na verdade, nem aparece na estrutura HTML (tentei pesquisar Ctrl+f para wpadminbar , sem resultados.)


O que eu fiz -

1. Incluído WP arquivo

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

2. Adicionado wp_head ();

Pouco antes de </head>

2. Adicionado get_header ();

Logo após <body>

3. Adicionado wp_footer ();

Pouco antes de </body>


Também tentei:

show_admin_bar (true);

get_footer ();

3
jmeinlschmidt

Se o WordPress for carregado de fora dos arquivos principais do WordPress usando um script PHP separado que inclua wp-load.php, o arquivo /template-loader.php não será carregado e, portanto, a ação template_redirect não será acionada.

Isso é importante porque template_redirect é como a barra de ferramentas é inicializada no front end. Observando default-filters.php, podemos ver onde a barra de ferramentas foi inicializada:

...
// 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 );
...

Uma função pode ser adicionada via plug-in ou tema para acionar a inicialização da barra de ferramentas:

function wpse240134_wp_admin_bar_init() {
    _wp_admin_bar_init();
}
add_action( 'init', 'wpse240134_wp_admin_bar_init' );

Observe que _wp_admin_bar_init() é considerada uma função interna do WordPress, portanto, use-o por sua conta e risco.

Também é importante notar que, se o WordPress estiver sendo carregado de um arquivo externo PHP incluindo wp-blog-header.php e a constante WP_USE_THEMES estiver configurada para false, o gancho template_redirect não será disparado novamente, portanto a função wpse240134_wp_admin_bar_init() acima pode ser usada para obter a barra de administração para mostrar quando WP_USE_THEMES está definido como 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>

Mais detalhes sobre o carregamento de WP usando um arquivo externo PHP: Qual é a maneira correta de usar funções do wordpress fora de arquivos wordpress?

5
Dave Romsey

Eu realmente gosto da resposta de Dave Romseys, mas acho que pode ser um pouco mais enxuto se você quiser apenas a barra de administração (como na pergunta original).

Dentro do wp-blog-header.php você encontrará o seguinte:

            do_action( 'template_redirect' );

Se você adicionar isso ao seu cabeçalho de aplicativos php personalizado, você receberá a barra de administração. Eu estava recebendo um modelo 404 ao usar o método de Dave, então isso pode funcionar melhor para você.

0
raison