// Function to Send Verification Code function send_verification_code() { $email = sanitize_email($_POST['email']); $code = rand(100000, 999999); // Store the code in the user's session for later verification session_start(); $_SESSION['verification_code'] = $code; // Prepare the email headers $headers = array( 'From: Rice News Today ', // Replace with your desired email address 'Content-Type: text/html; charset=UTF-8' ); // Send the verification code to the user's email $mail_sent = wp_mail($email, 'Email Verification Code', 'Your verification code is: ' . $code, $headers); if ($mail_sent) { wp_send_json_success(); } else { wp_send_json_error('Failed to send email.'); } } add_action('wp_ajax_send_verification_code', 'send_verification_code'); add_action('wp_ajax_nopriv_send_verification_code', 'send_verification_code'); // Function to Verify the Entered Code function verify_code() { session_start(); $entered_code = sanitize_text_field($_POST['entered_code']); if ($entered_code == $_SESSION['verification_code']) { wp_send_json_success(); } else { wp_send_json_error(); } } add_action('wp_ajax_verify_code', 'verify_code'); add_action('wp_ajax_nopriv_verify_code', 'verify_code'); // hide toolbar add_action('after_setup_theme', 'hide_admin_bar_except_admin'); function hide_admin_bar_except_admin() { if (!current_user_can('administrator')) { show_admin_bar(false); } } // Add custom user filter for "Un Displayed Users" in dashboard users section function add_un_displayed_user_filter($views) { global $wpdb; // Query for users who either have 'display_this_user' empty or no meta_key for 'display_this_user' $un_displayed_user_count = $wpdb->get_var( "SELECT COUNT(DISTINCT u.ID) FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id AND um.meta_key = 'display_this_user' WHERE um.meta_value IS NULL OR um.meta_value = ''" ); // Add custom link to the user filter $current = (isset($_GET['un_displayed_users'])) ? 'current' : ''; $views['un_displayed_users'] = "Un Displayed Users ($un_displayed_user_count)"; return $views; } add_filter('views_users', 'add_un_displayed_user_filter'); // Modify user query to show users with an empty 'display_this_user' meta_key or no 'display_this_user' meta_key function filter_users_by_un_displayed_meta($query) { global $pagenow; if (is_admin() && $pagenow == 'users.php' && isset($_GET['un_displayed_users'])) { $meta_query = array( 'relation' => 'OR', array( 'key' => 'display_this_user', 'value' => '', 'compare' => '=' // Users with empty 'display_this_user' ), array( 'key' => 'display_this_user', 'compare' => 'NOT EXISTS' // Users who don't have the 'display_this_user' meta key at all ) ); $query->set('meta_query', $meta_query); } } add_action('pre_get_users', 'filter_users_by_un_displayed_meta'); // Add email validation to accpt only .com and .net emails function custom_email_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( 'your-email' == $tag->name ) { // Replace 'your-email' with the name of your email field. $email = isset( $_POST['your-email'] ) ? trim( $_POST['your-email'] ) : ''; if ( !preg_match( '/\.(com|net)$/', $email ) ) { $result->invalidate( $tag, "We only accept email addresses ending with .com or .net." ); } } return $result; } add_filter( 'wpcf7_validate_email*', 'custom_email_validation_filter', 20, 2 ); add_filter( 'wpcf7_validate_email', 'custom_email_validation_filter', 20, 2 ); // Add "Display Users" to the bulk actions dropdown function register_bulk_display_users_action($bulk_actions) { $bulk_actions['display_users'] = __('Display Users', 'textdomain'); return $bulk_actions; } add_filter('bulk_actions-users', 'register_bulk_display_users_action'); // Handle the "Display Users" bulk action function handle_bulk_display_users_action($redirect_to, $doaction, $user_ids) { if ($doaction !== 'display_users') { return $redirect_to; // Exit if not the custom action } // Loop through the selected users and update the meta key 'display_this_user' to 'yes' foreach ($user_ids as $user_id) { update_user_meta($user_id, 'display_this_user', 'yes'); } // Redirect back to the user management screen with a success message $redirect_to = add_query_arg('bulk_display_users', count($user_ids), $redirect_to); return $redirect_to; } add_filter('handle_bulk_actions-users', 'handle_bulk_display_users_action', 10, 3); // Show a confirmation message after bulk action is processed function bulk_display_users_admin_notice() { if (!empty($_GET['bulk_display_users'])) { $displayed_count = intval($_GET['bulk_display_users']); printf('

' . _n('%s user has been displayed.', '%s users have been displayed.', $displayed_count, 'textdomain') . '

', $displayed_count); } } add_action('admin_notices', 'bulk_display_users_admin_notice'); // Enqueue Bootstrap and style.css dynamically function my_custom_styles() { // Enqueue Bootstrap CSS from the theme's directory wp_enqueue_style('bootstrap-css', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.min.css', array(), null); // Enqueue style.css with cache-busting (versioned by time) wp_enqueue_style('my-style', get_template_directory_uri() . '/style.css', array(), time()); } add_action('wp_enqueue_scripts', 'my_custom_styles');