Le résultat actuel est "PHP Fatal error: Call to undefined function wp_get_current_user ()" qui a du sens, mais n'aide pas.
J'ai besoin d'utiliser $ current_user.
Voici le code que j'utilise actuellement:
$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; }
Réponses:
Pour compléter la réponse de @ EAMann, vous devez encapsuler votre
wp_get_current_user()
appel (ou tout appel tentant d'accéder à une fonction définie danspluggable.php
) au sein de l''plugins_loaded'
action.Donc, si vous mettez cela dans votre
functions.php
fichier, faites-le comme ceci:Notez que nous ne sommes pas intéressés par ce que cette fonction renvoie . Nous sommes intéressés par le moment où cette fonction s'exécute , à savoir, après que le
pluggable.php
fichier a chargé et défini votrewp_get_current_user()
fonction.Donc, ne vous attendez pas à faire quoi que ce soit avec la valeur de retour pour cette fonction. Au lieu de cela, considérez cette fonction comme le point de départ de tout ce que vous voulez faire une fois que vous avez les informations de l'utilisateur actuel.
Le faire dans un plugin
Par souci d'exhaustivité, voici comment vous accéderiez à une fonction enfichable similaire à partir du contexte de votre propre plugin:
(mettez-le dans un fichier .php dans votre
plugins
dossier)J'ai utilisé cette technique avec succès pour un plugin de type "Coming Soon" très simple qui redirige l'utilisateur vers une page spécifique s'il n'est pas connecté en utilisant
wp_safe_redirect()
.la source
plugins_loaded
action à exécuterwp_safe_redirect()
si la page d'administration d'un plugin génère du HTML avant que le programmeheader('Location: …')
ait une chance de s'exécuter? J'ai un problème où une page définie en utilisantadd_menu_page(…)
génère l'en-tête WP (et le contenu et le pied de page) lorsque le plugin se charge, bien avantplugins_loaded
son exécution. Je voudrais avoir accès aux fonctions à l'intérieurpluggable.php
(pour accéder aux données utilisateur et faire des redirections) mais cela semble impossible. Avez-vous utiliséadd_menu_page
avecplugins_loaded
?plugins are included
→pluggable.php is included
→'plugins_loaded' is triggered
→'load-{page_hook}' is triggered
→'page_hook' is triggered
Le problème est que vous essayez de charger le code directement plutôt qu'avec un hook WordPress. WordPress charge un tas de code dans un ordre spécifique (vous pouvez voir la liste des actions déclenchées dans une demande typique dans le Codex ).
En essayant de tirer votre code directement, vous exécutez juste avant le
pluggable.php
chargement. Et vous ne devez pas essayerinclude()
directement ce fichier. Laissez WordPress faire cela pour vous.Au lieu de cela, définissez une fonction qui obtient les informations utilisateur:
Vous pouvez ensuite utiliser cette fonction n'importe où dans votre thème sans problème. Par exemple:
Si vous devez utiliser
$current_user
dans un autre code, assurez-vous de déclencher ce code avec une action WordPress ... ne l'appelez pas directement ou il sera exécuté avant que la fonction ne soit disponible.la source
Il semble que vous chargiez votre code avant que certaines fonctions ne soient disponibles. As-tu essayé:
la source
Ajoutez simplement cette fonction à votre fichier plugin .php
Appelez-le ensuite où vous voulez pour obtenir le statut de connexion de l'utilisateur. Par exemple:
la source