Stop the execution of foreach loop which extract data from array?

It has probably more systematical solution, but one option is to save the highest recipient ID, and then load only higher IDs next time. Something like this: (not tested) $last_id = get_option(‘last_recipient_id’); $rcvr_id = $wpdb->get_results( $wpdb->prepare(“SELECT ID FROM wp_users WHERE ID > %d ORDER BY ID “), $last_id ) ; foreach($rcvr_id as $rv_id) { $rcvr_id … Read more

Membership subscription, change user role when subscription runs out

Presumably you’ve saved an expiration data somewhere, so setup a wp_cron job to run daily. That job should check the expiration dates, and change the roles for users whose dates are past. if ( ! wp_next_scheduled( ‘alter_user_role_hook’ ) ) { wp_schedule_event( strtotime(‘tomorrow’), ‘daily’, ‘alter_user_role_hook’ ); } function alter_user_role_function() { global $wpdb; $today = date(‘Y-m-d H:i:s’,strtotime(‘today’)); … Read more