BuddyDev

Search

Replies

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Buddypress Poke Adjustments #36554

    3. Setting option to enable users to disable being poked incase they are being disturbed by other users

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: [Resolved] Buddypress moderation button shortcode #36543

    I would also want to disable the automattice addition of the REPORT button in post types and use the shortcode as a manual method for inserting the button in another location by inserting the shortcode in my child theme template file.

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: [Resolved] Can you help me with this code. #36540

    Gentle reminder sir

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: [Resolved] Can you help me with this code. #36514

    Hello,

    Brajesh i’m really interested in this code what does it do. can it be improved or merged into this code.
    The code you posted only allows for email notification but no bp notification.

    This code below has never worked for me can it be improved with your code into an addon

    
     /*
    Plugin Name: BuddyPress Follow Notify
    Description: This code will send an email and a BP notification to members when someone they are following publishes a post. There is a settings page in  WP Admin > Settings > Buddypress Followers Notify where you can set the Sender Name, Sender Email and select which post type to notify on.
    Version: 1.1.0
    */
    
    /*  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 Folllowers 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' );
    	?>
    	<input type='text' name='bp_follow_notify_settings[bp_follow_notify_sender_name_render]' value='<?php echo $options['bp_follow_notify_sender_name_render']; ?>'>
    	<?php
    }
    function bp_follow_notify_sender_email_render(  ) { 
    	$options = get_option( 'bp_follow_notify_settings' );
    	?>
    	<input type='text' name='bp_follow_notify_settings[bp_follow_notify_sender_email]' value='<?php echo $options['bp_follow_notify_sender_email']; ?>'>
    	<?php
    }
    function bp_follow_notify_post_types_render(  ) { 
    	$options = get_option( 'bp_follow_notify_settings' );
    	$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 ) { ?>
        	<?php $selected = in_array( $post_type, $options['bp_follow_notify_post_types'] ) ? ' selected="selected" ' : ''; ?>
    		<option value='<?php echo $post_type; ?>' <?php echo $selected; ?>><?php echo $post_type; ?></option>
        <?php } ?>
    	</select>
    
    <?php
    }
    function bp_follow_notify_settings_section_callback(  ) { 
    	echo __( '', '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 );
    function  bp_follow_notify_author_followers( $post ){
    	
    	$options = get_option( 'bp_follow_notify_settings' );
    	
    	if ( !in_array( get_post_type(), $options['bp_follow_notify_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 ) )  ;
    						
    		foreach($followers as $follower){
    			
    			/* Email Notification */
    			
    			$user = get_user_by( 'id' , $follower );
    			$follower_email = $user->user_email;
    			$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 )
    				);
    		
    			$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";
    			
     	
    			if( wp_mail( $follower_email, $subject , $message, $headers ) ) {
    				
    				//echo "sending success";
    			} else {
    				
    				//echo "sending failed";
    			}	
    			
    			/* 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		
    	} 	
    	
     }
    /*  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;
    } 
    
  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Buddypress Hashtag plugin #36064

    Hello brajesh,

    Is there any hope for this plugin

    Thanks

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Limit login for branded login plugin #36009

    The second problem has been solved the difference in login error message was caused by this plugin iThemes Security at https://wordpress.org/plugins/better-wp-security/ it has a settings under (wordpress tweaks) to select login method either by

    1. Email Address and Username (Default)
    2. Email Address Only
    3. Username Only

    My previous setting option was set at Email Address Only which caused the (invalid request) error message. I changed this setting back to Email Address and Username (Default) and this solved the problem.

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Limit login for branded login plugin #36004

    Thank please can you review this code if it will work

     // Change wordpress login form text labels //
    function branded_login_change_error_text( $translated_text, $text ) {
       if ( is_page( 'login' ) ) {
    	   
       $original_text = 'Password is Invalid!';
       $new_text = 'Your Email or Password is Invalid!';
       if ( $text == $original_text ) {
          $translated_text = $new_text;
       }
       return $translated_text;
      }
    }
    add_filter( 'gettext', 'branded_login_change_error_text', 30, 3 ); 
  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Limit login for branded login plugin #35989

    The plugin now works perfectly

    1. How can I change the failed login error from (Password is Invalid!) to (Email or Password is Invalid!)

    2. I have login disabled by username using the code above. When a user mistakenly tries to login with username instead of email this error message shows (Invalid Request) how can I change this to (Please login with valid email)

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Limit login for branded login plugin #35988

    Kindly ignore above message the fault was mine I had this plugin enabled https://perfmatters.io/docs/change-wordpress-login-url/

  • Participant
    Level: Guru
    Posts: 885
    Tosin on in reply to: Limit login for branded login plugin #35987

    login page can’t be accessed and logins are not successful keep getting the error

    http://www.website.com redirected you too many times.
    Try clearing your cookies.
    ERR_TOO_MANY_REDIRECTS

    This error occurs without activating limit login attempts plugin

    Please note that I have this code in my functions.php

    
     /**
     * Email login support for bp-branded-login plugin
     */
    add_filter( 'wp_authenticate_user', function( $user ) {
    
    	if ( isset( $_POST['log'] ) && ! is_email( trim( $_POST['log'] ) ) ) {
    		return new WP_Error( 'invalid_email', __( 'Please provide a valid email' ) );
    	}
    
    	return $user;
    }, 10 );