web-dev-qa-db-ja.com

電子メールに基づいてページの編集をユーザーに許可する

クイックインフォメーション

私は教師と彼らが教えるクラスの間の関係を作るために 投稿2投稿 プラグインを使っています。

  • 先生のページは、先生が追加されているカスタム投稿タイプfacultyです。
  • faculty投稿には、email_addressというラベルの付いたカスタムメタフィールドがあります。

  • クラスページは、クラスが追加されるカスタム投稿タイプclassです。

Posts 2 Postsプラグインを使えば、2つの投稿タイプclassfacultyを一緒に接続できます。そうすることで、私は先生のemail_addresstitleをつかみ、それをclassページに表示し、そしてclassページへのリンクを先生ページに表示することができます。

これ以外の場合...教師は学校の電子メールを使用してアカウントを作成できるようになります。同じEメールアドレスは、管理者がfaculty投稿に入力したemail_addressと一致する必要があります。


目標

教師にログインを許可し、自分のユーザーの電子メールアドレスと一致するカスタムメタフィールドemail_addressを持つclassページに関連付けられているfacultyページのみを編集できるようにします。

Role Scoper プラグインを使用すると、それが可能になるので、これは可能です。唯一の違いは、Role Scoperプラグインでは、手動で設定に入り、投稿タイプclassに関連付けられているすべてのページを表示し、ユーザー名でユーザーを選択し(電子メールではない)、それらをそのページに追加することです。技術的でないユーザーにとっては、この方法でそれをやるのは面倒で面倒です。

私のやり方では、特定のemail_addressを使ってfacultyを作成し、それをclassページにリンクすることができます。一致する電子メールアドレスを使用してログインすると、編集するclassページが表示されます。

うまくいけば、これらのすべてが理にかなっている、私は本当にどこから始めればいいのかわからず、私は答えを探すために半日を費やしました。


質問

自分のページと一致する電子メールアドレスを含むカスタムメタフィールドを持つ別のページに関連する単一のページをユーザーが編集できるようにするにはどうすればよいですか。

少年はそのような複雑な音をしています...前もって大いに感謝と感謝をしています。


プロセスのチュートリアル

  1. ユーザーログイン
  2. ユーザーのメールアドレスを取得する
  3. email_addressのカスタムメタフィールドがユーザーの電子メールと一致するfaculty投稿に一致
  4. そのfaculty投稿IDを取得
  5. そのclass IDに(投稿2の投稿で)リンクされているfacultyの投稿を見つけます。
  6. class投稿を編集する権限をユーザーに付与します。

プロセスは非常に簡単ですが、特定のカスタム投稿タイプのページを編集する権限をユーザーに実際に付与する方法はわかりません。またしても、Role Scoperはそれを実行できます。次の質問はその方法です。

3
rebz

これを行う最も簡単な方法は、登録時にカスタマイズされた 作成者ロール をユーザーに与えることであると思います。デフォルトの作成者ロールの機能は、自分の投稿を作成および編集できることだけです。 Vanilla投稿だけでなく、あなたの「クラス」カスタム投稿タイプの機能を有効にするには、これをカスタマイズする必要があります。 metaを持つ教職員の投稿では、 user_register アクションを query にフックできます。登録されたユーザーの電子メールと一致する値、そして一致する教職員の投稿が見つかった場合はユーザーにあなたの特別な役割を与えるために ユーザーを更新します 。クラスの投稿については、 save_postにフックして、その投稿間に接続 を追加します。ユーザーの教職員ページは、新しいクラスの投稿を作成するたびに作成されます。

1
Milo

教職員の代わりに、ユーザーメタを追加し、投稿をユーザーに関連付けるために投稿2投稿を使用しないでください。私はいくつかの会員制サイトをうまく構築するためにこのアプローチを使いました。そうすれば、すべてのNice wp_userベースの機能とセキュリティに頼ることができます。

0
GhostToast