O resultado atual é "Erro fatal do PHP: chame a função indefinida wp_get_current_user ()" que faz sentido, mas não ajuda.
Eu preciso usar $ current_user.
Aqui está o código que estou usando atualmente:
$wp->init();
do_action( 'init' ); // Check site status
$file='http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php';
if ( is_multisite() ) {
if ( true !== ( $file = ms_site_check() ) ) {
require( $file );
die();
}
unset($file);
}
// Get the current user's info
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
echo $current_user->user_login;
function paf_uname(){
return $current_user->user_login;
}
$wp->init(); do_action( 'init' ); // Check site status $file='http://taddy.co.uk/wp-admin/wp_includes/pluggable.php'; if ( is_multisite() ) { if ( true !== ( $file = ms_site_check() ) ) { require( $file ); die(); } unset($file); } // Get the current user's info $current_user = wp_get_current_user(); if ( !($current_user instanceof WP_User) ) return; echo $current_user->user_login; function paf_uname(){ return $current_user->user_login; }
Respostas:
Para adicionar à resposta do @ EAMann, você precisa encerrar sua
wp_get_current_user()
chamada (ou qualquer chamada que tente acessar uma função definida dentropluggable.php
) dentro da'plugins_loaded'
ação.Então, se você estiver colocando isso dentro do seu
functions.php
arquivo, faça assim:Observe que não estamos interessados no que essa função retorna . Estamos interessados em quando essa função é executada , ou seja, após o
pluggable.php
arquivo ter carregado e definido suawp_get_current_user()
função.Portanto, não espere fazer nada com o valor de retorno para esta função. Em vez disso, considere essa função como o ponto de partida para tudo o que você deseja fazer depois de obter as informações do usuário atual.
Fazendo isso em um plugin
Por uma questão de integridade, veja como você acessaria uma função conectável semelhante a partir do contexto do seu próprio plugin:
(coloque isso dentro de um arquivo .php dentro da sua
plugins
pasta)Eu usei essa técnica com êxito para um tipo de plug-in "Em breve" muito simples que redireciona o usuário para uma página específica, se ele não estiver conectado
wp_safe_redirect()
.fonte
plugins_loaded
ação para executarwp_safe_redirect()
se a página de administração de um plug-in gerar HTML antesheader('Location: …')
que ele possa ser executado? Estou tendo um problema em que uma página definida usandoadd_menu_page(…)
gera o cabeçalho WP (e o conteúdo e o rodapé) quando o plug-in é carregado, muito antes daplugins_loaded
execução. Eu gostaria de ter acesso a funções internaspluggable.php
(para acessar dados do usuário e fazer redirecionamentos), mas isso parece impossível. Você usouadd_menu_page
complugins_loaded
?plugins are included
→pluggable.php is included
→'plugins_loaded' is triggered
→'load-{page_hook}' is triggered
→'page_hook' is triggered
O problema é que você está tentando carregar o código diretamente, e não com um gancho do WordPress. O WordPress carrega um monte de código em uma ordem específica (você pode ver a lista de ações disparadas em uma solicitação típica no Codex ).
Ao tentar disparar seu código diretamente, você está executando um pouco antes do
pluggable.php
carregamento. E você não deve tentarinclude()
esse arquivo diretamente. Deixe o WordPress fazer isso por você.Em vez disso, defina uma função que obtenha as informações do usuário:
Você pode usar esta função em qualquer lugar do seu tema sem problemas. Por exemplo:
Se você precisar usar
$current_user
outro código, certifique-se de disparar esse código com uma ação do WordPress ... não o chame diretamente ou ele será executado antes que a função esteja disponível.fonte
Parece que você está carregando seu código antes que determinadas funções estejam disponíveis. Você tentou:
fonte
Basta adicionar esta função ao seu arquivo .php do plugin
Em seguida, chame-o em qualquer lugar que você deseja obter o status de login do usuário. Por exemplo:
fonte