web-dev-qa-db-ja.com

Buddypressアクティビティループでカスタム投稿タイプのカスタマイズされたアクティビティを表示する方法

私はbuddypressとwordpressで都市ポータル/ソーシャルビジネスディレクトリを構築しています。すべてのビジネスリスティングは、「ビジネス」というカスタム投稿タイプとして保存されます。次のコードを使用して、アクティビティストリーム内のビジネスリスティングに関連するアクティビティを表示します。

function bbg_record_my_custom_post_type_comments( $post_types ) {
      $post_types[] = 'business';
      return $post_types;
  }
add_filter( 'bp_blogs_record_comment_post_types', 'bbg_record_my_custom_post_type_comments' );

これが結果です http://i.stack.imgur.com/Poaay.png

今それは言う

ユーザーが投稿 'postname'にコメントしました

言うのにそれが必要な間

ユーザーが 'postname'にレビューを書いた

ビジネスポストタイプの場合

ユーザーがコメントしました 'postname'

他の投稿タイプの場合。

任意の助けは大歓迎です。

1
Gaurav Pareek

Bp-blogs-functions.php - > bp_blogs_record_comment()に示すように、 'bp_blogs_activity_new_comment_action'でadd_filterを使用することで、アクションを保存する前にフィルタリングすることができます。

または、 'bp_get_activity_action'のadd_filterを使用して、アクションが表示される前にフィルタリングすることもできます。

Post-> post_typeをチェックして、それが 'business'であるかどうかを簡単に確認できるので、おそらく前者の方が良いでしょう。

これは、CPTを作成するためにアクティビティの動作を調整する方法を示しています。 http://buddypress.org/community/groups/how-to-and-troubleshooting/forum/topic/display-custom-post-types- in-activity-feed/ あなたはそれを調整してコメントを扱うことができるはずです。

2
shanebp

答えてくれてありがとう@shanebp。私は完全な機能を答えとして投稿していますので、他の人にも役立つでしょう(質問自体に追加するのかどうかわかりませんでした)。

function jw_record_my_custom_comments_strings($activity_action, $comment_id, $is_approved = true ) {
        global $bp;
        $recorded_comment = get_comment( $comment_id );
        // Get blog and post data
        $blog_id                = get_current_blog_id();
        $recorded_comment->post = get_post( $recorded_comment->comment_post_ID );

        if ( in_array( $recorded_comment->post->post_type, apply_filters( 'bp_blogs_record_comment_post_types', array( 'business' ) ) ) )
            $activity_action = sprintf( __( '%1$s wrote a review on, %2$s', 'buddypress' ), bp_core_get_userlink( $user_id ), '<a href="' . $post_permalink . '">' . apply_filters( 'the_title', $recorded_comment->post->post_title ) . '</a>' );


        return $activity_action;
    }
1
Gaurav Pareek