Tagged: help
Hi Tosin,
Thank you for the code and the suggestion.Please allow us to look at this weekend and assist you by early next week. We need some time to test it. Our current schedule is packed for this week limiting our ability to assist you with it quickly.
Regards
BrajeshPS:- Is this code from some plugin?
PS:- The code was from github at this url https://github.com/r-a-y/buddypress-followers/issues/68 but the link to the source code is no longer available with a 404 error, I had converted the code to a plugin earlier since last year.
I think this would be a great addon for the buddypress follow plugin.
Hello Tosin,
Try the follow code.
/* Add settings page to WP Admin */ add_action( 'admin_menu', 'bp_follow_notify_add_admin_menu' ); add_action( 'admin_init', 'bp_follow_notify_settings_init' ); function bp_follow_notify_add_admin_menu( ) { add_options_page( 'Buddypress Followers Notify', 'Buddypress Folllowers Notify', 'manage_options', 'buddypress_folllowers_notify', 'bp_follow_notify_options_page' ); } function bp_follow_notify_settings_init( ) { register_setting( 'pluginPage', 'bp_follow_notify_settings' ); add_settings_section( 'bp_follow_notify_pluginPage_section', __( '', 'bp_follow_notify' ), 'bp_follow_notify_settings_section_callback', 'pluginPage' ); add_settings_field( 'bp_follow_notify_sender_name', __( 'Sender Name', 'bp_follow_notify' ), 'bp_follow_notify_sender_name_render', 'pluginPage', 'bp_follow_notify_pluginPage_section' ); add_settings_field( 'bp_follow_notify_sender_email', __( 'Sender Email', 'bp_follow_notify' ), 'bp_follow_notify_sender_email_render', 'pluginPage', 'bp_follow_notify_pluginPage_section' ); add_settings_field( 'bp_follow_notify_post_types', __( 'Post Types', 'bp_follow_notify' ), 'bp_follow_notify_post_types_render', 'pluginPage', 'bp_follow_notify_pluginPage_section' ); } function bp_follow_notify_sender_name_render() { $options = get_option( 'bp_follow_notify_settings', array() ); $sender_name = empty( $options['bp_follow_notify_sender_name_render'] ) ? '' : $options['bp_follow_notify_sender_name_render']; ?> <input type='text' name='bp_follow_notify_settings[bp_follow_notify_sender_name_render]' value='<?php echo $sender_name; ?>'> <?php } function bp_follow_notify_sender_email_render( ) { $options = get_option( 'bp_follow_notify_settings', array() ); $sender_email = empty( $options['bp_follow_notify_sender_email'] ) ? '' : $options['bp_follow_notify_sender_email']; ?> <input type='text' name='bp_follow_notify_settings[bp_follow_notify_sender_email]' value='<?php echo $sender_email; ?>'> <?php } function bp_follow_notify_post_types_render( ) { $options = get_option( 'bp_follow_notify_settings', array() ); $selected_post_types = empty( $options['bp_follow_notify_post_types'] ) ? array() : $options['bp_follow_notify_post_types']; $args = array( 'public' => true ); $post_types = get_post_types( $args ); ?> <select name='bp_follow_notify_settings[bp_follow_notify_post_types][]' multiple='multiple'> <?php foreach ( $post_types as $post_type ) : ?> <option value='<?php echo $post_type; ?>' <?php selected( in_array( $post_type, $selected_post_types ) ); ?>><?php echo $post_type; ?></option> <?php endforeach; ?> </select> <?php } function bp_follow_notify_settings_section_callback( ) { echo __( 'Notify', 'bp_follow_notify' ); } function bp_follow_notify_options_page( ) { ?> <form action='options.php' method='post'> <h2>Buddypress Folllowers Notify</h2> <?php settings_fields( 'pluginPage' ); do_settings_sections( 'pluginPage' ); submit_button(); ?> </form> <?php } add_action( 'new_to_publish', 'bp_follow_notify_author_followers', 99, 1 ); add_action( 'draft_to_publish', 'bp_follow_notify_author_followers', 99, 1 ); /** * @param WP_Post $post Post object. */ function bp_follow_notify_author_followers( $post ){ $options = get_option( 'bp_follow_notify_settings' ); $selected_post_types = empty( $options['bp_follow_notify_post_types'] ) ? array() : $options['bp_follow_notify_post_types']; if ( ! in_array( $post->post_type, $selected_post_types ) ) { return; } $author_id = $post->post_author; $author_name = get_the_author_meta( 'display_name' , $author_id ); $counts = bp_follow_total_follow_counts( array( 'user_id' => $author_id ) ); if ( $counts['followers'] > 0 ) { $followers = bp_follow_get_followers( array( 'user_id' => $author_id ) ); $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); $subject = '[' . $blog_name . '] New Post From ' . $author_name; $message = sprintf( __( ' %2$s %3$s Link: %4$s ----------- You are receiving this email because you are following %1$s.', 'bp-follow-notify' ), $author_name, $post->post_title, wp_trim_words( $post->post_content ), get_permalink( $post->ID ) ); $notifying_email = array(); foreach($followers as $follower){ /* Email Notification */ $user = get_user_by( 'id' , $follower ); $notifying_email[] = $user->user_email; /* BP Notification */ if ( bp_is_active( 'notifications' ) ) { bp_notifications_add_notification( array( 'user_id' => $user->ID, 'item_id' => $post->ID, 'secondary_item_id' => $author_id, 'component_name' => 'bp_follow_notify', 'component_action' => 'follow_new_post', 'date_notified' => bp_core_current_time(), 'is_new' => 1, ) ); } } //end loop $sender_name = ( !empty( $options['bp_follow_notify_sender_name']) ? $options['bp_follow_notify_sender_name'] : $blog_name ); $sender_email = ( !empty( $options['bp_follow_notify_sender_email'] ) ? $options['bp_follow_notify_sender_email'] : 'no-reply@' . $blog_name ); $headers = ''; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text/html; charset=" . get_bloginfo('charset') . "" . "\r\n"; $headers .= "From: " . $sender_name . " <" . $sender_email . ">" . "\r\n"; @wp_mail( $notifying_email, $subject , $message, $headers ); } } /* Register component */ function bp_follow_notify_filter_notifications_get_registered_components( $component_names = array() ) { // Force $component_names to be an array if ( ! is_array( $component_names ) ) { $component_names = array(); } array_push( $component_names, 'bp_follow_notify' ); return $component_names; } add_filter( 'bp_notifications_get_registered_components', 'bp_follow_notify_filter_notifications_get_registered_components' ); /* Format screen notfications */ add_filter( 'bp_notifications_get_notifications_for_user', 'bp_follow_notify_format_notifications', 9, 5 ); function bp_follow_notify_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) { if ( 'follow_new_post' === $action ) { if ( (int) $total_items > 1 ) { $title = sprintf( __( '%d new posts have been published', 'bp-follow-notify' ), (int) $total_items ); $link = bp_get_notifications_permalink(); } else { $title = sprintf( __( '%s has published a new post.', 'bp-follow-notify' ), bp_core_get_user_displayname( $secondary_item_id ) ); $link = get_permalink( $item_id ); } // WordPress Toolbar if ( 'string' === $format ) { $return = apply_filters( 'bp_follow_notify_notification', '<a href="' . esc_url( $link ) . '" title="' . esc_attr( title ) . '">' . esc_html( $title ) . '</a>', $title, $link ); // Deprecated BuddyBar } else { $return = apply_filters( 'bp_follow_notify_notification', array( 'text' => $title, 'link' => $link ), $link, (int) $total_items, $title, $title ); } return $return; } return $action; }
Please do let me know if it works or not.
Regards
RaviHello Kumar,
Thank you for the acknowledgment. Please have a look here.
Regards
Ravi
You must be logged in to reply to this topic.