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

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

ただいまの
回答率

88.59%

有名プラグイン「Buddypress」の通知バグについて

受付中

回答 0

投稿 編集

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

退会済みユーザー

お世話になります。
PHPに相当詳しくないと難しいかと思いますが…、

バグの内容

★概要
「コメントされた」という通知はあっても、「コメントに返信された」という通知がない。

同様の報告
https://bbpress.org/forums/topic/notification-when-reply-in-topic-receives-reply/

★詳細
WordPressの有名プラグイン「BBPress」で掲示板を作り、
「BuddyPress」から通知を受け取っています。

私が作った掲示板にAさんがコメントすると、
「Aさんにコメントされた」
と私に通知があります。

これはいいのですが、
しかし、

Aさんのコメントに誰かが返信しても、
「誰かに返信された」
とAさんに通知が来ないのです。

試したコード

functions.phpに下記で未解決

/* notifications */

function jpr_buddypress_add_notification( $reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymous_data = false, $author_id = 0, $is_edit = false, $reply_to = 0 ) {

    $current_topic_id = bbp_get_topic_id();
    $ids_of_subs = bbp_get_topic_subscribers($current_topic_id);

        // this is who the notification goes to. whose post is replied to
        $topic_author_id = bbp_get_topic_author_id( $reply_to );

        // Bail if somehow this is hooked to an edit action
        if ( !empty( $is_edit ) ) {
            return;
        }

        // Get author information
        // $topic_author_id   = bp_loggedin_user_id();
        $secondary_item_id = $author_id;

        // Hierarchical replies
        if ( !empty( $reply_to ) ) {            
            $reply_to_item_id = bbp_get_topic_author_id( $reply_to );
        }        

        // pass the $reply_id to the function that formats the notification
        $topic_id = $reply_to;

        // Get some reply information
        $args = array(
            'user_id'          => $topic_author_id,
            'item_id'          => $topic_id,
            'component_name'   => bbp_get_component_name(),
            'component_action' => 'bbp_new_reply',
            'date_notified'    => get_post( $reply_id )->post_date_gmt,
        );

        // Notify the topic author if not the current reply author
         if ( $author_id !== $topic_author_id ) {
            $args['secondary_item_id'] = $secondary_item_id ;

            bp_notifications_add_notification( $args );
         }
         // Notify the immediate reply author if not the current reply author
         if ( !empty( $reply_to ) && ( $author_id !== $reply_to_item_id ) ) {
            $args['secondary_item_id'] = $secondary_item_id;

            bp_notifications_add_notification( $args );
     }
}
// remove the bbpress notification function so we don't get dupicate notifications
remove_action( 'bbp_new_reply', 'bbp_buddypress_add_notification', 10, 7 );
add_action( 'bbp_new_reply', 'jpr_buddypress_add_notification', 10, 7 );

// remove the bbpress format notification function before using our custom function
remove_filter( 'bp_notifications_get_notifications_for_user', 'bbp_format_buddypress_notifications', 10, 5 );

function jpr_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {

    // New reply notifications
    if ( 'bbp_new_reply' === $action ) {
        $topic_id    = bbp_get_reply_id( $item_id );
        $topic_title = bbp_get_reply_title( $item_id );
        $topic_link  = wp_nonce_url( add_query_arg( array( 'action' => 'bbp_mark_read', 'topic_id' => $topic_id ), bbp_get_reply_url( $item_id ) ), 'bbp_mark_topic_' . $topic_id );
        $title_attr  = __( 'Topic Replies', 'bbpress' );

        if ( (int) $total_items > 1 ) {
            $text   = sprintf( __( 'You have %d new replies', 'bbpress' ), (int) $total_items );
            $filter = 'bbp_multiple_new_subscription_notification';
        } else {
            if ( !empty( $secondary_item_id ) ) {
                $text = sprintf( __( 'You have %d new reply to %2$s from %3$s', 'bbpress' ), (int) $total_items, $topic_title, bp_core_get_user_displayname( $secondary_item_id ) );
            } else {
                $text = sprintf( __( 'You have %d new reply to %s',             'bbpress' ), (int) $total_items, $topic_title );
            }
            $filter = 'bbp_single_new_subscription_notification';
        }

        // WordPress Toolbar
        if ( 'string' === $format ) {
            $return = apply_filters( $filter, '<a href="' . esc_url( $topic_link ) . '" title="' . esc_attr( $title_attr ) . '">' . esc_html( $text ) . '</a>', (int) $total_items, $text, $topic_link );

        // Deprecated BuddyBar
        } else {
            $return = apply_filters( $filter, array(
                'text' => $text,
                'link' => $topic_link
            ), $topic_link, (int) $total_items, $text, $topic_title );
        }

        do_action( 'jpr_format_buddypress_notifications', $action, $item_id, $secondary_item_id, $total_items );

        return $return;
    }
}
add_filter( 'bp_notifications_get_notifications_for_user', 'jpr_format_buddypress_notifications', 10, 5 ); 

環境

WordPress最新、インストール直後で、プラグインは上の2つしか入れていない状態です。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/08/10 13:18

    terraceさん、解決策ですね。mts10806さん、そうですね。m6uさん、英語圏でも同じ質問があり、2年ほど直っていないようです。papinianusさん、それはメール通知ですね。みなさん、ご意見ありがとうございます。l

    キャンセル

  • CHERRY

    2018/08/10 13:41

    英語圏の質問のURL を 質問に「参考URL」して、記載していただけませんか?

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/08/10 13:45

    CHERRYさん、「同様の報告」として質問文に追記致しました。

    キャンセル

まだ回答がついていません

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

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

関連した質問

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