bp_blogs_format_activity_action_new_blog_post( string $action, object $activity )
Format ‘new_blog_post’ activity actions.
Description
Parameters
- $action
-
(Required) Static activity action.
- $activity
-
(Required) Activity data object.
Return
(string) Constructed activity action.
Source
File: bp-blogs/bp-blogs-activity.php
function bp_blogs_format_activity_action_new_blog_post( $action, $activity ) {
$blog_url = bp_blogs_get_blogmeta( $activity->item_id, 'url' );
$blog_name = bp_blogs_get_blogmeta( $activity->item_id, 'name' );
if ( empty( $blog_url ) || empty( $blog_name ) ) {
$blog_url = get_home_url( $activity->item_id );
$blog_name = get_blog_option( $activity->item_id, 'blogname' );
bp_blogs_update_blogmeta( $activity->item_id, 'url', $blog_url );
bp_blogs_update_blogmeta( $activity->item_id, 'name', $blog_name );
}
/**
* When the post is published we are faking an activity object
* to which we add 2 properties :
* - the post url
* - the post title
* This is done to build the 'post link' part of the activity
* action string.
* NB: in this case the activity has not yet been created.
*/
if ( isset( $activity->post_url ) ) {
$post_url = $activity->post_url;
/**
* The post_url property is not set, we need to build the url
* thanks to the post id which is also saved as the secondary
* item id property of the activity object.
*/
} else {
$post_url = add_query_arg( 'p', $activity->secondary_item_id, trailingslashit( $blog_url ) );
}
// Should be the case when the post has just been published.
if ( isset( $activity->post_title ) ) {
$post_title = $activity->post_title;
// If activity already exists try to get the post title from activity meta.
} else if ( ! empty( $activity->id ) ) {
$post_title = bp_activity_get_meta( $activity->id, 'post_title' );
}
/**
* In case the post was published without a title
* or the activity meta was not found.
*/
if ( empty( $post_title ) ) {
// Defaults to no title.
$post_title = esc_html__( '(no title)', 'buddyboss' );
switch_to_blog( $activity->item_id );
$post = get_post( $activity->secondary_item_id );
if ( is_a( $post, 'WP_Post' ) ) {
// Does the post have a title ?
if ( ! empty( $post->post_title ) ) {
$post_title = $post->post_title;
}
// Make sure the activity exists before saving the post title in activity meta.
if ( ! empty( $activity->id ) ) {
bp_activity_update_meta( $activity->id, 'post_title', $post_title );
}
}
restore_current_blog();
}
// Build the 'post link' part of the activity action string.
$post_link = '<a href="' . esc_url( $post_url ) . '">' . $post_title . '</a>';
$user_link = bp_core_get_userlink( $activity->user_id );
// Build the complete activity action string.
if ( is_multisite() ) {
$action = sprintf( __( '%1$s posted a new post, %2$s, on the site %3$s', 'buddyboss' ), $user_link, $post_link, '<a href="' . esc_url( $blog_url ) . '">' . esc_html( $blog_name ) . '</a>' );
} else {
$action = sprintf( __( '%1$s posted a new post, %2$s', 'buddyboss' ), $user_link, $post_link );
}
// Legacy filter - requires the post object.
if ( has_filter( 'bp_blogs_activity_new_post_action' ) ) {
switch_to_blog( $activity->item_id );
$post = get_post( $activity->secondary_item_id );
restore_current_blog();
if ( ! empty( $post ) && ! is_wp_error( $post ) ) {
$action = apply_filters( 'bp_blogs_activity_new_post_action', $action, $post, $post_url );
}
}
/**
* Filters the new blog post action for the new blog.
*
* @since BuddyPress 2.0.0
*
* @param string $action Constructed activity action.
* @param object $activity Activity data object.
*/
return apply_filters( 'bp_blogs_format_activity_action_new_blog_post', $action, $activity );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.0.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.