サポート » その他 » is_user_logged_in で判別できません

  • こんにちわ
    現在、WordPressのログイン情報を使って、別のプログラムを動かすプログラムがあります。

    <?
    require ('../wp-load.php');
    if(is_user_logged_in()){
      echo "OK";
    }else{
      echo "NG";
    }
    echo get_bloginfo('description');
    ?>
    

    まずはこれだけでテストしているのですが
    結果は

    NG
    サイトの説明
    

    となてしまいます。読み込まれていないわけではなさそうなのですが、なにか考えられる原因はありますでしょうか?
    ログインしたままで、ブラウザのタブを切り替えています。
    お知恵を拝借いただければ幸いです。

    PHP: 7.1
    WordPress: 4.9.1

    • このトピックは raimuが4 ヶ月、 3 週間前に変更しました。
    • このトピックは raimuが4 ヶ月、 3 週間前に変更しました。
    • このトピックは raimuが4 ヶ月、 3 週間前に変更しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 取り組みは「新しくPHPで簡易的な機能を作成したページにログイン状況を反映したい」でしょうか。
    ログインの判別プロセスを取り込むところがないのだと思いますが
    ふつうにログインした状態のページを読み込んだ方がよいと思いますので
    無地のテンプレートをつかってことなるタブの画面を実装してはどうでしょうか。
    page.phpをもとにコンテンツ表示部分をごっそり自前のプログラムにすることで
    作成が可能だと思います。

    モデレーター mypacecreator

    (@mypacecreator)

    こんにちは。

    require ('../wp-load.php');

    を使っていることから、問題のページはWordPressで構築されたサイトではなく、WordPress外にあるPHP
    ページだとお察しします。

    で、wp-load.phpを読み込むことでWordPressの関数は使えますが、ユーザーのログイン状態までWordPress外に引き継ぐことはできないようです。

    同じ構成であろうと思われる環境で、

    <?php $user = wp_get_current_user(); var_dump($user); ?>

    という感じでログイン中のユーザー情報の表示を試みましたが

    object(WP_User)#2060 (7) {
      ["data"]=>
      object(stdClass)#2061 (0) {
      }
      ["ID"]=>
      int(0)
      ["caps"]=>
      array(0) {
      }
      ["cap_key"]=>
      NULL
      ["roles"]=>
      array(0) {
      }
      ["allcaps"]=>
      array(0) {
      }
      ["filter"]=>
      NULL
    }

    という感じで取得できませんでした。

    ということで、何らかの方法でセッションをWordPress外へ引き継いでやる処理を自前で実装する必要がありそうです。(セキュリティとかの関連で可能かどうかは分からないのでどなたか詳しい方のフォローを期待します)

    • この返信は4 ヶ月、 2 週間前に  mypacecreator さんが編集しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。