2016-04-08 11 views
1

が表示されない:Wordpressのwp_get_current_user()私が試してみたいし、次んので、私はちょうど試してみて、ユーザーが持っているどのような役割を調べるために、いくつかのPHPをテストしていた結果

場合は基本的にtrueに $nplを更新
foreach($current_user->roles as $key => $value){ 
    if($value == ''){ 
     $npl= true; 
    } 
} 

ユーザーロールは選択されません。それは私にそれより公平なビット以上を示すべきであるとき

以下のコードはArrayを返します。

<?php 

include 'wp-blog-header.php'; 

$current_user = wp_get_current_user(); 
$user_id = $current_user->ID; 
$user = new WP_User($user_id); 

echo "id:" . $current_user; 

     foreach($current_user->roles as $key => $value){ 
      if($value == ''){ 
       echo "yes"; 
      } 
      else { 
       echo "no"; 
      } 
     } 

print_r(array_values($user->roles)); 

?> 

array

私はそれを動作させるためにいくつかの段階で試してみたが、IDを示すことは、早期のいずれか何も表示されていない

EDIT

私も試してみました:

<?php 

include '../wp-blog-header.php'; 
include '../includes/wp-load.php'; 
include_once('../wp-config.php'); 

$current_user = wp_get_current_user(); 
$user_id = $current_user->ID; 

echo 'Username: ' . $current_user->user_login . '<br />'; 
echo 'User email: ' . $current_user->user_email . '<br />'; 
echo 'User first name: ' . $current_user->user_firstname . '<br />'; 
echo 'User last name: ' . $current_user->user_lastname . '<br />'; 
echo 'User display name: ' . $current_user->display_name . '<br />'; 
echo 'User ID: ' . $current_user->ID . '<br />'; 

foreach($current_user->roles as $key => $value){ 
    if($value == ''){ 
     echo "yes" . '<br />'; 
    } 
    else { 
     echo "no" . '<br />'; 
    } 
} 

print_r(array_values($current_user->roles)); 

echo '<br />' . "The time is " . date("h:i:sa"); 

?> 
+0

あなたは何のphp/wordpressのバージョンを持っていますか?あなたのコードはあなたの結果と互換性がありません。 'wp_get_current_user'はオブジェクトを返しますので、上記のスクリプトは" Array "を出力しません。致命的なエラーが発生します(クラスWP_Userのオブジェクトを文字列に変換できませんでした)。あなたのコードは、使用しているコードと同じであることを確かめますか? – fusion3k

+0

最新のワードプレス、それは致命的なエラーを返さない、それはスクリーンショットで私があなたを示したものを出力します。 – Ryflex

+0

[WP Func Ref](https://codex.wordpress.org/Function_Reference/wp_get_current_user):「現在のユーザーオブジェクトを取得する」を参照してください。また、なぜ "id:"が表示されないのですか? – fusion3k

答えて

1

くださいincludewp-load.phpとロードファイルがルートにあります。ですから、wp-その後、あなたは含める必要がWordPressのインストールの外に存在するPHPファイルでWordPressの機能を使用する場合は

必要とする最も簡単な方法は、/ WP-load.php

が含まロードファイルを添付してくださいload.php。おそらく、あなたはこれを「WordPressへのフック」と呼ぶことができます。

たぶん、あなたはすでにのように、相対パスの方法のいくつかの並べ替えを使用している:

しかし、ディレクトリが変更された場合、これは問題を作成することができます。 wp-load.phpを取得するには、きれいでダイナミックな方法が必要です。

<?php include '../../../wp-load.php'; ?> 

ショートと甘い:)

免責事項::だからここでそれを行う最も簡単な方法は、コードのわずか2行(ファイルの最上部にそれを置く)と、である。これは、のために意図されます実験的および開発目的のみ。実稼動環境でWordPressを重複してロードすることはお勧めしません。しかし、なぜ?あなたのコードに誤りがあり

+0

これは動作するようには見えませんが、依然として同じ出力です。私はそれを実行しているので、場所については問題ではありません/現時点でテストとしてこれが動作することを知ったら、すでに '$ current_user'を持っているプラ​​グインに追加します – Ryflex

1

はこれを試してください:あなたは直接$current_userを呼び出している

<?php 

include 'wp-blog-header.php'; 

$current_user = wp_get_current_user(); 
$user_id = $current_user->ID; 
$user = new WP_User($user_id); 

echo "id:" . $user_id; 

    foreach($current_user->roles as $key => $value){ 
     if($value == ''){ 
      echo "yes"; 
     } 
     else { 
      echo "no"; 
     } 
    } 

    print_r(array_values($current_user->roles)); 

    ?> 

出力として配列を与えます。

+0

いいえ、配列は来ます一番下のプリントから。 'echo $ current_user;'は何も返しません。あなたのコードの出力は 'id:0Array()'を返しています。間違っています。ログインしているアカウントのIDは1で、配列には 'administrator'が含まれていなければなりません。 – Ryflex

+0

'include_once(path/to/wordpress/wp-config.php)'を含めてみてください。これはワードプレス機能をロードします。 –

+0

いいえ、何もありません。私も試してみました:http://i.imgur.com/8OqKYI5.png – Ryflex

関連する問題