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

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

ただいまの
回答率

90.52%

  • WordPress

    7202questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 258
退会済みユーザー

退会済みユーザー

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 );

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

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

よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2017/10/27 11:33

    コードは<code>ボタンを押して```で囲ってください。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/10/27 11:57 編集

    失礼しました。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/10/27 14:03 編集

    <code>ボタン ``` です

    キャンセル

回答 1

checkベストアンサー

+1

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

//投稿者にメール送信
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 13:30

    ありがとうございます。

    大変申し訳ないのですが、私の勘違いで一つはカスタム投稿タイプでしたが、もう一つはカスタム投稿タイプではありませんでした。
    カスタム投稿タイプ1とそれ以外の投稿という分け方、
    もしくはカスタム投稿タイプ1と特定のカテゴリという分け方はできますか?

    何度も本当に申し訳ありません。

    キャンセル

  • 2017/10/27 14:01

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

    キャンセル

  • 2017/10/27 17:27

    分岐はできました。
    ありがとうございます。

    管理者にメールは送信されますが、投稿者には送信されません。
    $to = $user_email;
    というコードがないからでしょうか?

    よろしくお願いします。

    キャンセル

  • 2017/10/27 17:46

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

    キャンセル

  • 2017/10/27 17:49

    そうですね、もう一度確認してみます。

    キャンセル

  • 2017/10/27 18:13

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

    キャンセル

  • 2017/10/27 22:00

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

    デバッグモードでエラーが無いか確認してください。

    キャンセル

  • 2017/10/30 14: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 12:53

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

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    7202questions

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