Tagged: Friend's section, private message button
I tried to use the code from the link https://buddydev.com/add-send-private-message-button-in-members-directory-on-a-buddypress-network/ but the page kept freezing. I finally wrote the code but I can not show app the button to the Friend’s section in every user profile
Please share more details.
Which theme are you using? Which template pack and by freezing, did you mean wsod or something else?
Please let me know and I will assist.
Regards
BrajeshApologies. The freezing is about the buddydev.com page.
The theme I use on the site is the Community Builder Pro Child and the template pack is the “legacy”.
The code I have used is shown below./** * Get a link to send a BetterMessage PM to the given User. * * @param int $user_id user id. * * @return string */ function bm_get_send_private_message_to_user_url( $user_id ) { return bp_loggedin_user_domain() . 'bp-messages/?new-message&fast=1&to=' . bp_core_get_username( $user_id ); } /******************** //Show private message button on members list ********************/ /** * Get the User Id in the current context * @param int $user_id * @return int user_id */ function hibuddy_get_context_user_id($user_id=false){ if ( bp_is_my_profile() || !is_user_logged_in() ) return false; if( !$user_id ) $user_id = bp_get_member_user_id();//for members loop if( !$user_id && bp_is_user() ) //for user profile return false; //$user_id = bp_displayed_user_id(); return apply_filters( 'hibuddy_get_context_user_id', $user_id ); } function hibuddy_get_send_private_message_button() { // get the user id to whom we are sending the message $user_id = hibuddy_get_context_user_id(); if (!$user_id || $user_id == bp_loggedin_user_id()) return; $defaults = array ( 'id' => 'private_message-'.$user_id, 'component' => 'messages', 'must_be_logged_in' => true, 'block_self' => true, 'wrapper_id' => 'send-private-message-'.$user_id, 'wrapper_class' => 'send-private-message', 'link_href' => bm_get_send_private_message_to_user_url($user_id), 'link_title' => __('Send a private message to this user.', 'buddypress'), 'link_rel' => __('Private Message', 'buddypress'), 'link_class' => 'send-message' ); $btn = bp_get_button( $defaults ); return apply_filters('hibuddy_get_send_private_message_button', $btn); } function hibuddy_send_private_message_button() { $user_id = hibuddy_get_context_user_id(); //echo buddydev_private_message_button_shortcode( $user_id ); echo hibuddy_get_send_private_message_button(); } if ( bp_is_active( 'messages' ) ){ add_action( 'bp_directory_members_actions', 'hibuddy_send_private_message_button', 10 ); //experiment with the last value to change position }
Thank you.
Please change this
'block_self' => true
to
'block_self' => false
That will make it appear in friends.
I also suggest adding link text such as
'link_text' => __('Send a private message.', 'buddypress'),
to make link text appear correctly.
Regards
BrajeshThank you, for your help Brajesh.
Along with the change in function below (Removed the bp_is_my_profile() check), did the trick!
function hibuddy_get_context_user_id($user_id=false){ if ( !is_user_logged_in() ) return false; if( !$user_id ) $user_id = bp_get_member_user_id();//for members loop if( !$user_id && bp_is_user() ) //for user profile return false; //$user_id = bp_displayed_user_id(); return apply_filters( 'hibuddy_get_context_user_id', $user_id ); }
Regards,
SotirisYou are welcome.
I am glad it is working now.Regards
Brajesh
The topic ‘ [Resolved] Add Send Private Message Button on Friend's section in every user profile’ is closed to new replies.