タイミングは個人の好みだと思うのですがいくつかあります。(詳しいことはCodexのアクションをご確認ください)。例えばブログへのコメント時に何かをしたいということであれば、comment_post
のアクションに処理を追加すれば良いと思います。
ブログではない場合は、そのページのテンプレートのソースを読んでみてください。同じようなアクションが呼ばれていると思います。何かの参考になれば幸いです。
ありがとうございます。
とりあえずcomment_postで全ソースを検索したところ、wp-includes/comment.phpの2096行目に
do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'] );
というのを見つけました。
そして、その下にwp_notify_postauthorというのを見つけたのですが、これは調べたところコメントの内容をメールで送信している関数だとわかりました。
サイトではメールでの通知は一切行われていないので、たぶんこれをカスタマイズして使えばいいのかなと思いまして、子テーマにて再定義することにしました。
ただ、ここからまた行き詰ってしまいまして、buddypress内での通知はbp_notifications_add_notificationで行っていると思うのですが、これを使っているところを参考にすると、どこもこの関数をラップしてフックしているようでした。
(あまりフックというのがよくわかっていないのですが、C言語でいうコールバック関数という認識でしょうか?)
この時、bp_notifications_add_notificationに渡す引数をどこからどうやって持ってきているのか、まだ理解しておらずどうしたらいいのかわかりません。
(もしかしたら、どちらかというとphpの話?)
引き続き誰かご教授頂けたら幸いです。
よろしくお願いします。
bp_notifications_add_notification
の引数についてはBuddyPressのCodexに若干説明がありますね。
全部optionalみたいですので、必要なもののみ渡せば良いと思います。
例えばメンションのnotificationでは、component_action
にnew_at_mentionを設定して呼び出している模様ですが(bp-activity/bp-activity-notifications.php::bp_activity_at_mention_add_notification())、先にsetup_globals()
で’notification_callback’を定義しておく必要がありそうです。(bp-activity/bp-activity-loader.php::setup_globals)
そしてここで定義した関数でbp_notifications_add_notification()
の引数であるcomponent_actionの動作を実装すると、動くかもしれません。
私自身このような実装はしたことがなく、ソースを読んでみて感じたことを記載しています。従って不足点や勘違いもあると思いますがご容赦ください。また、結構難易度が高い感じですので、トライアンドエラーで取り組む必要があると思います。
以上、申し遅れましたが私もBP-NotificationWidgetを使っています。便利でいいですね。
追記ですが、フックは私も正確な定義は分かりません。。。だいたいそんな感じですよ〜
ありがとうございます。
ご教授頂いた事を参考にしながら自分なりに色々ソースを解析してみたのですが、例えばbp-activity/bp-activity-notifications.php の bp_activity_format_notifications()では、通知を知らせる文言とリンク先の作成をしていると思います。
その中でフックの呼び出し(apply_filters())をしていますが、通知が溜まっている数($total_items)によって、bp_activity_multiple_at_mentions_notificationかbp_activity_single_at_mentions_notificationを呼び出していると思います。
(関数の説明コメントもそんな感じなのが書かれていると思います)
しかし、両方ともどこを探しても見つけることが出来ませんでした。
これは私の認識が間違っているのか、もしくは探し方が悪いだけでどこかにあるのかのどちらかなのでしょうか?
フックのご説明ありがとうございます。
また、私もBP-NotificationWidgetは本当に良いプラグインだと思っております。
ここでのfilterは「第2引数のリンク文字列をカスタマイズしたい場合はadd_filterしてね」というものに見えますので、特に変更する必要がない場合は使わなくて良いと思います。
探しても見つからない件は、そういうことで無いのでしょう。
ありがとうございます。
ご説明ありがとうございます。
フック(フィルタ、アクション)について色々と誤解していた事に気付きました。
色々と試行錯誤した結果、なんとか自分がやりたいことが実装できました。
本当に感謝です。
なのでこれにて解決とさせて頂きます。
最後に誠にありがとうございました。