サポート » テーマ » 固定ページにコメントが付いたときのみフックしたいです

  • 解決済 miumiu1980

    (@miumiu1980)


    固定ページにコメントが付いた時に指定ユーザーにメールが届く仕組みを作ろうと考えています。

    現在テーマのfunction.phpにedit_postアクションを使い下記のようなコードを書きました(簡略化しています)

    add_action('edit_post', 'sendMail', 10, 2);
    
    function sendMail($post_ID, $post){
    
     if(is_page()){
       //ここにメールの送信処理が書いてあります 
     }
    
    }

    アクションedit_postを利用すると、あらゆる投稿処理時にメールが送信されてしまい、望んだような挙動になりません。
    そのため、is_page()で固定ページ時の投稿のみを切り分けようと思ったのですが、is_page()は表示時に利用されるもののようでうまくいきません。

    固定ページのコメント欄に投稿があった時のみ処理を行いたいです。
    ご存知の方、ご教授よろしくお願い致します!!

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • is_pageを使うのであれば(このフックでいいかは置いておいて(確認してないだけ)) is_pageの引数にページIDを渡してやればいいのでは?

    if( is_page( $post_ID ) )

    Hinaloeさん
    ご返答ありがとうございます

    if文の条件をお教えいただいた、引数にページIDを渡すものに変更してみたのですが、
    うまくいきませんでした

    is_pageを使った条件分岐自体が間違いな気がします、、

    固定ページのコメント欄にコメントがついた時に起動するフックみたいなものなんてあるのでしょうか、、

    ごめんなさい、そもそも「コメント投稿時」ですよね。このアクションは「コンテンツ更新時」なのでそもそも違うアクションな気がします。

    comment_post というアクションがあるので試してみてください。

    add_action('comment_post', 'sendMail', 10, 2);
    
    function sendMail( $comment_id, $comment_approved ){
     $comment = get_comment( $comment_id );
     if ( is_page ( $comment-> comment_post_ID) ) {
       ...
     }
    }

    あっ、is_pageじゃないですね…

    if ( get_post_type( $comment-> comment_post_ID ) === 'page' )

    みたいなのかな…

    Hinaloeさん

    ご返答ありがとうございます

    ご教授いただきましたcomment_postで期待通りの動作ができました!
    また、postIDを今回の関数内で参照する部分、自分ではグローバル変数の$postを参照する
    方法しか知らなかったのですが、 $comment->comment_post_IDなんて便利なものがあるのですね

    勉強になりました!
    ありがとうございます!

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「固定ページにコメントが付いたときのみフックしたいです」には新たに返信することはできません。