Replies
- Tosin on November 17, 2023 at 3:14 pm in reply to: Discussion on dealing with buddypress inactive users or dead profiles #50886
I don’t want to give up on this so im trying another approach below
// change the role of inactive members over 1 year to ghost member function update_site_ghost_members() { // Check if it's the activity directory page and the user is an admin if (bp_is_activity_directory() && current_user_can('administrator')) { $last_run_timestamp = get_user_meta(0, 'last_ghost_member_role_update', true); // Check if a month (2592000 seconds = 30 days) has passed since the last run if (!$last_run_timestamp || (time() - $last_run_timestamp) >= 2592000) { // Get users with specific roles (e.g., 'contributor' and 'subscriber') $users = get_users(array( 'fields' => 'ID', 'role__in' => array('contributor', 'subscriber'), )); foreach ($users as $user_id) { // Check user's last activity using BuddyPress function $last_activity = bp_get_user_last_activity($user_id); // Calculate time difference $inactive_time = strtotime('now') - strtotime($last_activity); // If inactive for more than one year (31536000 seconds = 1 year) if ($inactive_time > 31536000) { // Assign 'Ghost Member' role to the user $user = new WP_User($user_id); $user->add_role('ghost_member'); } } // Update the timestamp to indicate the code ran update_user_meta(0, 'last_ghost_member_role_update', time()); } } } add_action('template_redirect', 'update_site_ghost_members');running get_users would be awesome in batches
Will this code work
/** * Custom function to count user posts and cache the result using transients */ function custom_count_user_posts($user_id) { $post_count = get_transient('custom_user_post_count_' . $user_id); if (false === $post_count) { $post_count = count_user_posts($user_id); set_transient('custom_user_post_count_' . $user_id, $post_count); } return $post_count; } /** BuddyPress Auto Friendship Pro + BuddyPress Featured Members autofollow. */ function auto_follow_on_welcome_page_load() { // Check if the current page slug matches 'welcome' if (is_page('welcome')) { if (!function_exists('bp_follow_start_following')) { return; } $user = wp_get_current_user(); // Check if the user has no last activity and hasn't already performed the follow action if (empty(bp_get_user_last_activity($user->ID)) && !get_user_meta($user->ID, 'has_followed_featured_users', true)) { global $wpdb; $featured_user_ids = $wpdb->get_col( $wpdb->prepare( " SELECT user_id FROM {$wpdb->usermeta} INNER JOIN {$wpdb->users} ON {$wpdb->usermeta}.user_id = {$wpdb->users}.ID WHERE {$wpdb->usermeta}.meta_key = %s AND {$wpdb->usermeta}.meta_value = %s AND {$wpdb->users}.user_status = %d ", '_is_featured', '1', 0 ) ); $users_more_than_2_posts = array(); foreach ($featured_user_ids as $featured_user_id) { $post_count = custom_count_user_posts($featured_user_id); if ($post_count > 2) { $users_more_than_2_posts[] = $featured_user_id; } } $total_featured_users = count($users_more_than_2_posts); $selected_user_ids = $users_more_than_2_posts; if ($total_featured_users > 10) { shuffle($users_more_than_2_posts); $selected_user_ids = array_slice($users_more_than_2_posts, 0, 9); } else if ($total_featured_users > 5) { shuffle($users_more_than_2_posts); $selected_user_ids = array_slice($users_more_than_2_posts, 0, 6); } else if ($total_featured_users < 5) { shuffle($users_more_than_2_posts); $selected_user_ids = array_slice($users_more_than_2_posts, 0, 3); } foreach ($selected_user_ids as $featured_user_id) { bp_follow_start_following(array( 'leader_id' => $featured_user_id, 'follower_id' => $user->ID, )); } // Set a user meta flag to indicate that the follow action has been performed update_user_meta($user->ID, 'has_followed_featured_users', true); } } } add_action('template_redirect', 'auto_follow_on_welcome_page_load');- Tosin on November 14, 2023 at 8:51 pm in reply to: [Resolved] How to disable new user welcome email for admins #50877
I found another solution below
function disable_admin_new_user_registration_email( $wp_new_user_notification_email_admin, $user, $blogname ) { //Stop wp_mail() from working add_filter( 'pre_wp_mail', '__return_false' ); //Return an unchanged value from this filter return $wp_new_user_notification_email_admin; } add_filter( 'wp_new_user_notification_email_admin', 'disable_admin_new_user_registration_email', 10, 3 ); Hello Brajesh
Have you been able to test this plugin and see how if affects buddypress performance
Thanks
- Tosin on November 13, 2023 at 2:07 pm in reply to: [Resolved] How to disable new user welcome email for admins #50861
After all the stress there is something so simple
add_filter('wp_new_user_notification_email', '__return_false'); - Tosin on November 11, 2023 at 9:12 pm in reply to: [Resolved] How to disable new user welcome email for admins #50854
This code seemed to work
// Disable new user registration email in WordPress for admin users only function disable_send_new_user_notifications($user_id, $notify = 'user') { // Check if user role is administrator $user_role = get_user_meta($user_id, 'wp_capabilities', true); if (isset($user_role['administrator'])) { // User is an administrator, skip sending notification return; } if (empty($notify) || 'admin' === $notify) { return; } elseif ('both' === $notify) { // Send new users the email but not the admin. $notify = 'user'; } wp_send_new_user_notifications($user_id, $notify); } // Disable default email notifications add_action('init', function () { remove_action('register_new_user', 'wp_send_new_user_notifications'); remove_action('edit_user_created_user', 'wp_send_new_user_notifications'); // For BuddyPress remove_action('bp_core_activated_user', 'wp_send_new_user_notifications'); // For WooCommerce remove_action('woocommerce_created_customer', 'wp_send_new_user_notifications'); }); // Replace default notifications with custom function add_action('register_new_user', 'disable_send_new_user_notifications'); add_action('edit_user_created_user', 'disable_send_new_user_notifications', 10, 2); // For BuddyPress add_action('bp_core_activated_user', 'disable_send_new_user_notifications'); // For WooCommerce add_action('woocommerce_created_customer', 'disable_send_new_user_notifications'); I have done as you instructed with is_user_loggdin() but now how can I resolve the performance issue with count_user_posts and simplify the code
Thanks
- Tosin on October 30, 2023 at 10:37 am in reply to: Buddyblog pay per post – how to delete pending oreders when draft is deleted #50807
Hello Ravi,
I have added the processing and on-hold but the code did not empty the cart when the unpaid (pending) post was deleted. I aslo tried both empty cart and delete order together with code below
function empty_cart_and_delete_order_on_pending_post_deletion( $post_id ) { $post = get_post($post_id); if ( ! $post ) { return; } if ($post->post_status === 'pending' && $post->post_type === 'post') { if (function_exists('bbl_ppp_get_post_order_id') && function_exists('wc_get_order')) { $order_id = bbl_ppp_get_post_order_id($post_id); if ($order_id) { $order = wc_get_order($order_id); if ($order && in_array($order->get_status(), array('processing', 'on-hold', 'pending', 'draft'))) { // Empty the cart WC()->cart->empty_cart(true); // Delete the pending order $order->delete_order(true); } } } } } add_action('before_delete_post', 'empty_cart_and_delete_order_on_pending_post_deletion');This also did not work
- Tosin on October 27, 2023 at 10:58 am in reply to: Buddyblog pay per post – how to delete pending oreders when draft is deleted #50796
Gentle reminder sir thanks
- Tosin on October 20, 2023 at 11:13 am in reply to: Buddyblog pay per post – how to delete pending oreders when draft is deleted #50762
I tested the edited code but it did not work