Add button to private message member/author of product post
-
Hi
How can I add code to my functions.php to create a button (or text link) displayed on a woocommerce product page to send a Private Message to the buddypress member/author who upload the product?
The site is using a multi-vendor plugin, WCFM, to create/publish the products.
Thanks in advance.
-
hello did you find a solution ?
yes, i use this code…
// ADD SHORTCODE TO SINGLE PRODUCT – PM link
add_action( ‘woocommerce_share’, ‘enfold_customization_extra_product_content’, 15 );
function enfold_customization_extra_product_content() {
echo do_shortcode(“[bp-pm-button]”);
}//////////////////////////////////////////////////////////////////
// BuddyPress send private message button
///////////////////////////////////////////////////////////////////**
* Get a link to send PM to the given User.
*
* @param int $user_id user id.
*
* @return string
*/
function buddydev_get_send_private_message_to_user_url( $user_id ) {
return wp_nonce_url( bp_loggedin_user_domain() . bp_get_messages_slug() . ‘/compose/?r=’ . bp_core_get_username( $user_id ) );
}/**
* Shortcode [bp-pm-button username=optional_some_user_name]
*
* @param array $atts shortcode attributes.
* @param string $content content.
*
* @return string
*/
function buddydev_private_message_button_shortcode( $atts, $content = ” ) {
// User is not logged in.
if ( ! is_user_logged_in() ) {
return ”;
}$atts = shortcode_atts( array(
‘user_id’ => ”,
‘username’ => ”,
‘label’ => ‘Send this Member a Message’,
), $atts );$user_id = absint( $atts[‘user_id’] );
$user_login = $atts[‘username’];// if the username is given, override the user id.
if ( $user_login ) {
$user = get_user_by( ‘login’, $user_login );
if ( ! $user ) {
return ”;
}
$user_id = $user->ID;
}if ( ! $user_id ) {
if ( ! in_the_loop() ) {
return ”;
}$user_id = get_the_author_meta(‘ID’ );
}
// do not show the PM button for the user, if it is aimed at them.
if ( bp_loggedin_user_id() === $user_id ) {
return ”;
}// if we are here, generate the button.
$button = sprintf(‘%2$s‘, buddydev_get_send_private_message_to_user_url( $user_id ), $atts[‘label’] );return $button . $content;
}add_shortcode( ‘bp-pm-button’, ‘buddydev_private_message_button_shortcode’ );
okay thanks a lot ! I try to copy and past the code but it’s not working for me and i use also the plugin BP Better Messages. Do you know what i need to change in the code ? Thanks for your reply
im not sure what you can change. Try disabling BP better message and see if it works…
the other thing you could change is find this part of the code in the top shortcode section: ‘woocommerce_share’ and replace with ‘woocommerce_meta’other than that i dont have anything else…
I also need this, and this code also does not work, I add it to the Functions.php theme function file, right?
- You must be logged in to reply to this topic.