web-dev-qa-db-ja.com

自分の投稿が拒否されたことを電子メールでユーザーに送信する

次の問題に対する解決策を探しています。

ユーザーがフロントエンドで投稿を作成できるように、 WPユーザーフロントエンド を使用しています。保存した後、管理者は投稿、および公開(承認されている場合)、または拒否(承認されていない場合)を確認する必要があります。

投稿が承認されると、その投稿が承認されたことを知らせる電子メールが自動的にユーザーに送信されます(これについては既に説明しました)。

しかし、管理者が承認しない場合は、ボタンをクリックするごとに、バックエンドからカスタムテキスト(承認されなかった理由)を含むユーザーに電子メールを送信する方法は?

1
Asped

投稿編集ページの[公開]ボタンのすぐ下に、一度クリックするとフォームを含むモーダル(厚手の)ウィンドウを開く[拒否して通知]ボタンを追加します(投稿者の名前、投稿のタイトル、および標準のメッセージを使用して事前にコンパイルされているので、投稿者に電子メールを送信するために使用できます。

これを達成するためにあなたは必要です:

  1. ボタンを印刷する機能。あなたは正しい場所にそれを印刷するために'post_submitbox_misc_actions'アクションフックを使うことができます
  2. モーダルウィンドウにフォームを出力する関数。この関数は現在の投稿IDを使用して作者を取得し、作者の電子メールを隠しフィールドに入れます。
  3. フォーム送信時にメールを送信する機能

最後の2つの関数は Ajax Api で簡単に機能するので、ajaxや他のjsコードを置くjsファイルも必要です。

そのため、スクリプトをエンキューしてスクリプトを wp_localize_script でローカライズするには、別の機能が必要です。

ボタンには、現在の投稿に関するjsからアクセス可能な情報も含める必要があります。そのためにはdata-*属性を使用できます。

ボタンとフォーム(ポイント1。および2。)の両方を印刷する機能では、次の点を確認する必要があります。

  • 現在のユーザーは編集機能を持っています
  • 現在のページは編集後のページです(post.php

電子メールを送信する機能(points3。)では、いくつかのセキュリティタスクを実行する必要があります。

  • 現在のユーザーが編集機能を持っているかどうかを確認する
  • 一回だけチェックする(以前はフォームの隠しフィールドとして追加されていた)

その後、この関数はメール送信プロセスに関するいくつかの情報(送信されたメッセージまたは送信されなかったメッセージ)を出力し、jsonとして出力する必要があります。エラーが発生した場合は、デバッグ情報も出力することをお勧めします。おそらく、デバッグがアクティブかどうかをWPで確認します。


編集:プラグインコード

元の答えで私はここにコードを投稿しました。これで、ここで説明したすべてのワークフローをOOPアプローチを使用して含めるためのプラグインを作成しました。プラグインはローカライズの準備ができており、すでにイタリア語にローカライズされています。

GPLのプラグインはライセンスされていて利用可能です on GitHub


プラグインスクリーンショット


The Reject and Notify button


The modal form


Success Message


問題が発生してデバッグが有効になっている場合...

Error message with debug

2
gmazzap