質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

2387閲覧

カスタム投稿タイプ別にレビュー待ちの投稿の投稿者に別の内容のメールを送信する

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/10/27 02:29

http://wpcj.net/1190
こちらのコードを投稿者に送信するように変更するコードをご教示いただきましたが、
2種類のフォームがあり、どちらもレビュー待ちで投稿されます。

管理者にくるメールは同じでもいいのですが、投稿者にメールを送信する内容は、それぞれのフォームに合った内容にしたいです。


教えて頂いたコード

function mail_for_pending( $new_status, $old_status, $post ) {
$user_id = $post ->post_author;
$user_info = get_userdata( $user_id );
$user_email = $user_info->user_email;

// 投稿がレビュー待ち以外からレビュー待ちに変わった(新規の場合は$old_statusが'new'、$new_statusが'pending'になります) if ( $old_status != 'pending' && $new_status == 'pending' ) { // ブログ名(サイト名) $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // 投稿名 $post_title = wp_specialchars_decode($post->post_title, ENT_QUOTES); // 送信先(管理者) ※ここを投稿者に変更 //$to = get_option('admin_email'); $to = $user_email; // 件名 $subject = "[{$blogname}] 承認待ちの投稿が投稿されました({$post_title})"; // 本文 $message = "承認待ちの投稿「{$post_title}」が投稿されました。確認をお願いします。\r\n"; $message .= "\r\n"; $message .= "編集および公開: \r\n"; $message .= wp_specialchars_decode(get_edit_post_link( $post->ID ), ENT_QUOTES) . "\r\n"; // メールを送信 $r = wp_mail( $to, $subject, $message ); }

}
add_action( 'transition_post_status', 'mail_for_pending', 10, 3 );


変更したコード

//投稿者にメール送信
function mail_for_pending( $new_status, $old_status, $post ) {
$user_id = $post ->post_author;
$user_info = get_userdata( $user_id );
$user_email = $user_info->user_email;

// 投稿がレビュー待ち以外からレビュー待ちに変わった(新規の場合は$old_statusが'new'、$new_statusが'pending'になります) if ( $old_status != 'pending' && $new_status == 'pending' ) { // ブログ名(サイト名) $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // 投稿名 $post_title = wp_specialchars_decode($post->post_title, ENT_QUOTES); // 送信先(管理者) ※ここを投稿者に変更 //$to = get_option('admin_email'); $to = $user_email; // 件名 $subject = "[{$blogname}] 求人情報が登録されました({$post_title})"; // 本文 $message = "「{$post_title}」の求人情報が登録されました。\r\n"; $message = " ご入金の確認が取れましたら、公開いたします。\r\n"; $message .= "\r\n"; $message .= "[{$blogname}] \r\n"; $message .= "http://*********.com/ \r\n"; // メールを送信 $r = wp_mail( $to, $subject, $message ); }

}
add_action( 'transition_post_status', 'mail_for_pending', 10, 3 );

投稿者に編集・公開をしてもらわないので、変更しました。

この求人情報の登録とは別にもう一つレビュー待ちになるフォームがあります。
どちらもカスタム投稿タイプです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/27 02:33

コードは<code>ボタンを押して```で囲ってください。
退会済みユーザー

退会済みユーザー

2017/10/27 02:58 編集

失礼しました。
退会済みユーザー

退会済みユーザー

2017/10/27 05:03 編集

<code>ボタン ``` です
guest

回答1

0

ベストアンサー

投稿タイプによって内容を変更して分ければ良いだけです。
修正しました。

//投稿者にメール送信 function mail_for_pending( $new_status, $old_status, $post ) { $user_id = $post ->post_author; $user_info = get_userdata( $user_id ); $user_email = $user_info->user_email; // 投稿がレビュー待ち以外からレビュー待ちに変わった(新規の場合は$old_statusが'new'、$new_statusが'pending'になります) if ( $old_status != 'pending' && $new_status == 'pending' ) { // ブログ名(サイト名) $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // 投稿名 $post_title = wp_specialchars_decode($post->post_title, ENT_QUOTES); // カスタム投稿タイプ1を指定 if ( get_post_type() === 'カスタム投稿タイプ1' ) { // 件名 $subject = "[{$blogname}] 求人情報が登録されました({$post_title})"; // 本文 $message = "「{$post_title}」の求人情報が登録されました。\r\n"; $message = " ご入金の確認が取れましたら、公開いたします。\r\n"; $message .= "\r\n"; $message .= "[{$blogname}] \r\n"; $message .= "http://*****.com/ \r\n"; // カスタム投稿タイプ2を指定 //} elseif ( get_post_type() === 'カスタム投稿タイプ2' ) { //カスタム投稿タイプ1以外 } else { // 件名 $subject = "[{$blogname}] 求人情報が登録されました({$post_title})"; // 本文 $message = "「{$post_title}」の求人情報が登録されました。\r\n"; $message = " ご入金の確認が取れましたら、公開いたします。\r\n"; $message .= "\r\n"; $message .= "[{$blogname}] \r\n"; $message .= "http://*****.com/ \r\n"; } // メールを送信 $r = wp_mail( $user_email, $subject, $message ); } } add_action( 'transition_post_status', 'mail_for_pending', 10, 3 );

投稿2017/10/27 02:45

編集2017/10/27 04:37
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/27 04:30

ありがとうございます。 大変申し訳ないのですが、私の勘違いで一つはカスタム投稿タイプでしたが、もう一つはカスタム投稿タイプではありませんでした。 カスタム投稿タイプ1とそれ以外の投稿という分け方、 もしくはカスタム投稿タイプ1と特定のカテゴリという分け方はできますか? 何度も本当に申し訳ありません。
退会済みユーザー

退会済みユーザー

2017/10/27 05:01

私もそう思って、さきほどやってみたんですけどエラーになったので、何か間違えたのかもしれません。 もう一度やってみます。
退会済みユーザー

退会済みユーザー

2017/10/27 08:27

分岐はできました。 ありがとうございます。 管理者にメールは送信されますが、投稿者には送信されません。 $to = $user_email; というコードがないからでしょうか? よろしくお願いします。
退会済みユーザー

退会済みユーザー

2017/10/27 08:46

$r = wp_mail( $user_email, $subject, $message );で指定しているので要りません。 何か間違ってると思います。
退会済みユーザー

退会済みユーザー

2017/10/27 08:49

そうですね、もう一度確認してみます。
退会済みユーザー

退会済みユーザー

2017/10/27 09:13

修正していただいたコードをそのまま貼り付けても、投稿者にはメールがこないです。 管理者にはきます。
退会済みユーザー

退会済みユーザー

2017/10/27 13:00

自身の環境に問題が無いか確認しての結果でしょうか? コードに問題があるような書き方をしないでください。 前回の質問のコードだったら動くんでしょうか? このコードが動かないなら多分前回のコードも動かないと思います。 デバッグモードでエラーが無いか確認してください。
退会済みユーザー

退会済みユーザー

2017/10/30 05:16

遅くなりましたが、デバッグモードでエラーは出ませんでした。 コードに問題があると思ったことはないです。 カスタム投稿タイプを使用しているのは WP User Frontend – Membership, Profile, Registration & Post Submission Plugin for WordPress のプラグインで作成したフォームです。 こちらは投稿者にメールが届きますが、メールの内容はカスタム投稿タイプ名を指定した方ではなく、それ以外に設定した内容のメールでした。 もう一つは、投稿ですので if ( get_post_type() === 'カスタム投稿タイプ1' ) { を if ( is_category(1) ) { や if ( is_category('カテゴリ名')) { にしてみたりしましたが、上手くいきませんでした。 最終的には、とりあえず両方のフォームをプラグインで作成して メールの内容もどちらでも使えるようなものに変更しました。 何度もありがとうございました。 不快な思いをさせてしまってことも申し訳なく思っております。
退会済みユーザー

退会済みユーザー

2017/11/20 03:53

大変遅くなりましたが、ふと思いついて…カスタム投稿タイプでなく、スラッグで条件分岐をしたところうまくいきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問