wordpressのログイン状態を確認して他のプログラムに利用する方法

wordpressが乗っているサイトにwordpressと連携する別プログラムを実装したく開発していただが、不特定多数の人には触ってほしくないため、ログイン機能をつけようと計画していた。

自前でログイン機能をつけるのがめんどくさかったのでWordpressにログインしている人かどうか判定する機能をつけた

//追記
//wordpress自体の関数にログインしているか判定する関数があったので、そちらを使ったほうが安全であることがわかった

目次

WordPress純正の関数を使用する方法

 

require('/home/bitnami/apps/wordpress/htdocs/wp-blog-header.php');

if(!is_user_logged_in()){
  header('Location: https://www.yahoo.co.jp/');
  exit;
}else{
  echo "ログインしています";
}

 

上記コードはwordpressにログインしていなければyahooにリダイレクトされるというコード

WordPressの関数を利用するには「」をrequireする必要がある。上記コードはbitnamiのWordpressの場合は「」のパスのため、適宜変更すること。

COOKIEを利用する方法

wordpressにログインするとCOOKIE情報のwordpress_logged_in_xxxxxxという配列が2つ作成される。

なので、wordpress_logged_in_を含む配列名が2つあるかとカウントして2つあればログインしているユーザとして判別するようにしている。

ログオフするとwordpress_logged_in_xxxxxxが1つになる。

ただしWordpressのロールまでは見ていないので利用には注意。あくまで自前プログラム用として使うこと

if(func_checkLogin){
  echo "ログインユーザ";
}else{
  echo "ログインしてないユーザ";
}

function func_checkLogin(){

    $keys = array_keys($_COOKIE);

$login = 0;
$count = count( $keys );
for( $i = 0; $i < $count; ++$i ) {
if(strpos($keys[$i],'wordpress_logged_in_') !== false){
$login = $login+1;
}
}

if($login==2){
return true;

}else{
return false;
}
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です