web-dev-qa-db-fra.com

Obtenir les données de l'utilisateur actuel de l'extérieur PHP page

J'ai une page PHP au même niveau que le modèle/thème sur WordPress. Je dois pouvoir obtenir les détails de l'utilisateur actuellement connecté à partir de cette page.

J'ai essayé ceci:

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

global $current_user;
$current_user = wp_get_current_user();
var_dump( $current_user );

Mais ça ne retourne rien. 0 comme user_id et rien sur les autres champs. Est-ce que je manque quelque chose?

METTRE À JOUR:

C'est le résultat du var_dump:

object Object]1object(WP_User)#79 (10) {
      ["data"]       => NULL
      ["ID"]         => int(0)
      ["id"]         => int(0)
      ["caps"]       => array(0) {}
      ["cap_key"]    => NULL
      ["roles"]      => array(0) {}
      ["allcaps"]    => array(0) {}
      ["first_name"] => string(0) ""
      ["last_name"]  => string(0) ""
      ["filter"]     => NULL
    }
1
user159500

Vous pouvez...

Chargez le fichier dans le fichier dans lequel vous souhaitez afficher le message 'hé nom d'utilisateur':

<?php include(TEMPLATEPATH .'/check-user-hello.php'); ?>

.
Puis dans ce fichier "check-user-hello.php"
Vous devez mettre ce code

<?php
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo 'Hey ' . $current_user->display_name;
} else {
echo '<a href="'. get_bloginfo('url') .'/wp-admin" class="loginlinktop">Login</a>';
}
?>

.
J'espère que cela t'aides :)

POUR en savoir plus sur ce sujet:

.
FIX 3

Autant que je sache, vous devez saisir wp-blog-header.php pour pouvoir exécuter des fonctions Wordpress en dehors de la boucle .. alors .. essayez ceci.

<?php

require('../../../wp-blog-header.php');

if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo 'Hey ' . $current_user->display_name;
} else {
echo '<a href="'. get_bloginfo('url') .'/wp-admin" class="loginlinktop">Login</a>';
}
?>

.
Veuillez noter:
LE CHEMIN "wp header" que j'ai créé dans ce code suppose que votre fichier se trouve dans votre répertoire de modèles. Si ce n'est pas le cas, vous devez modifier le chemin de require afin de charger correctement le fichier.

4
Sagive SEO

J'ai continué à rencontrer un problème jusqu'à ce que je réalise que j'avais copié du code supplémentaire à partir de l'extrait de code trouvé lors d'une recherche.

define( 'SHORTINIT', true );

Quand j'ai remplacé "vrai" par "faux", cela a fonctionné à merveille.

define( 'SHORTINIT', false );
0
endingwhy