web-dev-qa-db-ja.com

外部から現在のユーザーデータを取得する PHP ページ

WordPressのテンプレートやテーマと同じレベルのPHPページがあります。このページから現在ログインしているユーザーの詳細を取得できるようにする必要があります。

私はこれを試しました:

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

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

しかし、それは何も返さない。 0user_idとして、他のフィールドには何もありません。私は何かが足りないのですか?

更新:

これは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

あなたはできる...

'hey username'メッセージを表示したいファイルにファイルをロードします。

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


そして、そのファイルの中で "check-user-hello.php"
このコードを書く必要があります

<?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>';
}
?>


お役に立てれば :)

この主題についてもっと知るためには:


FIX 3

私の知る限りでは、ループの外でWordpressの関数を実行するには、wp-blog-header.phpを取得する必要があります。

<?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>';
}
?>


注意してください:
私がこのコードで作成した "wp header blog"パスはあなたのファイルがあなたのテンプレートディレクトリにあると仮定しています。

4
Sagive SEO

検索で見つかったスニペットから余分なコードをコピーしたことに気付くまで、私は問題にぶつかりました。

define( 'SHORTINIT', true );

私が 'true'を 'false'に置き換えたとき、それは魅力のように働きました。

define( 'SHORTINIT', false );
0
endingwhy