特定のユーザー権限のみアクションフックを実行させたい
-
初めて質問させていただきます。
会員サイトの構築を考えており、下記仕様となっています。
1.生徒(購読者権限)と講師(投稿者権限)の会員登録は別ルートとする
2.WordPress標準のユーザー登録画面は使用しない
3.生徒の会員登録はプラグインで行い、講師の会員登録は自作の会員登録フォームで行う
4.自作の会員登録フォームではダッシュボードからではなく直接WordPressユーザー登録を行う
5.講師会員は生徒会員と区別するために、WordPressユーザーにカスタムフィールドを設定し、講師の会員登録時に直接カスタムフィールドにも値をセットする上記の5なのですが、wp_insert_user処理後にupdate_user_metaを利用することによって、自動で講師会員登録およびカスタムフィールドへの値セットができています。以下コードを抜粋します。
【講師会員ユーザー登録】
$userdata = array(
‘user_login’ => $user_name, // ログイン名
‘user_pass’ => $user_pass, // パスワード
‘user_email’ => $user_email, // メールアドレス
‘role’ => ‘author’, // 権限
);
$user_id = wp_insert_user( $userdata );【カスタムフィールドへ値セット】
function user_cf_set($user_id) {
$val = ‘lecturer’;
update_user_meta($user_id, ‘group’, $val);
}
add_action( ‘user_register’, ‘user_cf_set’, 10, 1 );なお、講師の会員登録フォームはHTMLで作成し、固定ページにHTMLの登録フォームを適用させています。
【HTMLフォーム(page-lecturer.php)スラッグ:lecturer】
<html>
<head>
<title>entry</title>
</head>
<body>
<div class=”wrapper”>
<div class=”container”>
<h1>講師登録</h1>
<form class=”my_form” name=”my_signup_form” id=”my_signup_form” action=”” method=”post”>
<div>
<label for=”signup_user_name”>ユーザー名</label>
<input id=”signup_user_name” name=”user_name” type=”text” pattern=”^([a-zA-Z0-9@._-]{4,})$” title=”半角英数字4文字以上で入力してください
日本語は使用不可です” required>
</div>
<div>
<label for=”signup_password”>パスワード</label>
<input id=”signup_password” name=”user_pass” id=”user_pass” type=”password” pattern=”(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}” title=”8文字以上で下記全てを必ず含む必要があります
【1文字以上の数字、小文字アルファベット、大文字アルファベット】” required>
</div>
<div>
<label for=”signup_email”>メールアドレス</label>
<input id=”signup_email” name=”user_email” type=”email” pattern=”[\w\d_-]+@[\w\d_-]+\.[\w\d._-]+” required>
</div>
<button type=”submit” name=”my_submit” class=”my_submit_btn” value=”signup”>登録</button>
<?php wp_nonce_field( ‘my_nonce_action’, ‘my_nonce_name’ ); //nonceフィールド設置 ?>
</form>
</div>
</div>
</body>
</html>なお、生徒登録のプラグインはSimple WordPress Membershipを利用する予定です。
ここからが質問なのですが、上記ユーザー登録およびカスタムフィールドに値セットするコードをそのまま子テーマのfunctions.phpファイルに記述すると、プライグインでの生徒会員登録時もカスタムフィールドに値がセットされてしまいます。
そこで、講師会員登録用のフォームからの登録時のみ、カスタムフィールドに値セットするようにしたいのですが、そのようなことは可能でしょうか。
固定ページのスラッグや投稿IDでカスタムフィールドへの値セットの処理を分岐させようとしたり、カスタムフィールドに値セットする部分の処理をphpファイルを分けて講師会員登録用のフォームからショートコードで呼ぼうとしたりしたのですが、全くうまくいきませんでした。
もしくは、そもそもこのようなことはできないのでしょうか。
蛇足ですが、上記コードはネットで検索したコードを見よう見まねで動かしているもので、私はPHPのプログラミングができません。つたない質問になってしまいましたが、何卒お知恵を貸していただけると助かります。
以上長文となってしまいましたが、ご回答いただければ幸いです。
- トピック「特定のユーザー権限のみアクションフックを実行させたい」には新たに返信することはできません。