自分の投稿が拒否されたことを電子メールでユーザーに送信する
次の問題に対する解決策を探しています。
ユーザーがフロントエンドで投稿を作成できるように、 WPユーザーフロントエンド を使用しています。保存した後、管理者は投稿、および公開(承認されている場合)、または拒否(承認されていない場合)を確認する必要があります。
投稿が承認されると、その投稿が承認されたことを知らせる電子メールが自動的にユーザーに送信されます(これについては既に説明しました)。
しかし、管理者が承認しない場合は、ボタンをクリックするごとに、バックエンドからカスタムテキスト(承認されなかった理由)を含むユーザーに電子メールを送信する方法は?
投稿編集ページの[公開]ボタンのすぐ下に、一度クリックするとフォームを含むモーダル(厚手の)ウィンドウを開く[拒否して通知]ボタンを追加します(投稿者の名前、投稿のタイトル、および標準のメッセージを使用して事前にコンパイルされているので、投稿者に電子メールを送信するために使用できます。
これを達成するためにあなたは必要です:
- ボタンを印刷する機能。あなたは正しい場所にそれを印刷するために
'post_submitbox_misc_actions'
アクションフックを使うことができます - モーダルウィンドウにフォームを出力する関数。この関数は現在の投稿IDを使用して作者を取得し、作者の電子メールを隠しフィールドに入れます。
- フォーム送信時にメールを送信する機能
最後の2つの関数は Ajax Api で簡単に機能するので、ajaxや他のjsコードを置くjsファイルも必要です。
そのため、スクリプトをエンキューしてスクリプトを wp_localize_script
でローカライズするには、別の機能が必要です。
ボタンには、現在の投稿に関するjsからアクセス可能な情報も含める必要があります。そのためにはdata-*
属性を使用できます。
ボタンとフォーム(ポイント1。および2。)の両方を印刷する機能では、次の点を確認する必要があります。
- 現在のユーザーは編集機能を持っています
- 現在のページは編集後のページです(post.php)
電子メールを送信する機能(points3。)では、いくつかのセキュリティタスクを実行する必要があります。
- 現在のユーザーが編集機能を持っているかどうかを確認する
- 一回だけチェックする(以前はフォームの隠しフィールドとして追加されていた)
その後、この関数はメール送信プロセスに関するいくつかの情報(送信されたメッセージまたは送信されなかったメッセージ)を出力し、jsonとして出力する必要があります。エラーが発生した場合は、デバッグ情報も出力することをお勧めします。おそらく、デバッグがアクティブかどうかをWPで確認します。
編集:プラグインコード
元の答えで私はここにコードを投稿しました。これで、ここで説明したすべてのワークフローをOOPアプローチを使用して含めるためのプラグインを作成しました。プラグインはローカライズの準備ができており、すでにイタリア語にローカライズされています。
GPLのプラグインはライセンスされていて利用可能です on GitHub 。
プラグインスクリーンショット
問題が発生してデバッグが有効になっている場合...