web-dev-qa-db-ja.com

セッション変数をチェックして、Wordpressのページとメニューをログインしたユーザーにだけ見えるようにする

私は他のプラットフォームのAPIを介してワードプレスでユーザーにログインしようとしているので、私がしているのはユーザーの資格情報(username、password)を送信してユーザー情報を返す外部APIを呼び出すためのajax関数を使うことです。 、名前...)。

私が必要としているのは私のワードプレスのウェブサイトで言及されたユーザーをログインすることです、しかし彼らをワードプレスのデータベースに保存せずに登録するので、私はページ/投稿の可視性を管理するために 'ユーザーロールプラグイン'を使うことができません。

ですから、私の目標は次のとおりです。ワードプレスサイトにログインしているときに、データベースに保存せずに、この外部ユーザーに対してページ/投稿、さらにはメニューさえも見えるようにする。

変数セッションや自分自身のcheck_user_login()関数を使っているのではないかと思いますが、どうすればこれを達成できるのかわかりません(ログインしているユーザーにのみ見えるように特定のページを検証する場所は?) PHPでの経験、それは私がワードプレスを使用して初めてです。

アイデアを求めているだけなので、今のところコードを投稿していないからです。

ご協力ありがとうございます。

3
esneyderp

@ Miloのコメントは正しいと思います。おそらくあなたはcurrent_user_can()などのような関数を使いたいと思うでしょう。あるいは、これが別のメニューを表示するだけなら、あなたのワードプレスサイトでクッキーを設定することができます(APIからの呼び出しを通して)リモートで認証されると、リモートユーザーに別のメニューを表示します。

add_filter('wp_nav_menu_args', 'wpse_wp_nav_menu_args_filter');
function wpse_wp_nav_menu_args_filter($args = array()) {
   if ($_COOKIE["remoteuser"] == "loggedin") { // User is remotely authenticated
        // Setup Primary Menu
        if ( $args['theme_location'] == 'primary' ) {
            $args['menu'] = "remote_user_menu";
        } 
        return $args;           
    }   else {
        return $args;       
            }
}

その後、同じ行に沿って何かを使用して、ページを表示するかどうかを決定できます。

2
TomC