bp_blogs_update_post_activity_meta( WP_Post $post, BP_Activity_Activity $activity, object $activity_post_object )
Updates a blog post’s activity meta entry during a post edit.
Description
Parameters
- $post
-
(Required) Post object.
- $activity
-
(Required) Activity object.
- $activity_post_object
-
(Required) The post type tracking args object.
Source
File: bp-blogs/bp-blogs-functions.php
function bp_blogs_update_post_activity_meta( $post, $activity, $activity_post_object ) { if ( empty( $activity->id ) || empty( $activity_post_object->action_id ) ) { return; } // Update post title in activity meta. $existing_title = bp_activity_get_meta( $activity->id, 'post_title' ); if ( $post->post_title !== $existing_title ) { bp_activity_update_meta( $activity->id, 'post_title', $post->post_title ); if ( ! empty( $activity_post_object->comments_tracking->action_id ) ) { // Now update activity meta for post comments... sigh. add_filter( 'comments_clauses', 'bp_blogs_comments_clauses_select_by_id' ); $comments = get_comments( array( 'post_id' => $post->ID ) ); remove_filter( 'comments_clauses', 'bp_blogs_comments_clauses_select_by_id' ); if ( ! empty( $comments ) ) { $activity_ids = array(); $comment_ids = wp_list_pluck( $comments, 'comment_ID' ); // Set up activity args. $args = array( 'update_meta_cache' => false, 'show_hidden' => true, 'per_page' => 99999, ); // Query for old-style "new_blog_comment" activity items. $args['filter'] = array( 'object' => $activity_post_object->comments_tracking->component_id, 'action' => $activity_post_object->comments_tracking->action_id, 'primary_id' => get_current_blog_id(), 'secondary_id' => implode( ',', $comment_ids ), ); $activities = bp_activity_get( $args ); if ( ! empty( $activities['activities'] ) ) { $activity_ids = (array) wp_list_pluck( $activities['activities'], 'id' ); } // Query for activity comments connected to a blog post. unset( $args['filter'] ); $args['meta_query'] = array( array( 'key' => 'bp_blogs_' . $post->post_type . '_comment_id', 'value' => $comment_ids, 'compare' => 'IN', ) ); $args['type'] = 'activity_comment'; $args['display_comments'] = 'stream'; $activities = bp_activity_get( $args ); if ( ! empty( $activities['activities'] ) ) { $activity_ids = array_merge( $activity_ids, (array) wp_list_pluck( $activities['activities'], 'id' ) ); } // Update activity meta for all found activity items. if ( ! empty( $activity_ids ) ) { foreach ( $activity_ids as $aid ) { bp_activity_update_meta( $aid, 'post_title', $post->post_title ); } } unset( $activities, $activity_ids, $comment_ids, $comments ); } } } // Add post comment status to activity meta if closed. if( 'closed' == $post->comment_status ) { bp_activity_update_meta( $activity->id, 'post_comment_status', $post->comment_status ); } else { bp_activity_delete_meta( $activity->id, 'post_comment_status' ); } }
Changelog
Version | Description |
---|---|
BuddyPress 2.5.0 Add the post type tracking args object parameter | BuddyPress 2.5.0 Add the post type tracking args object parameter |
BuddyPress 2.2.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.