• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

WP Bitz

A curated collection of code snippets for WordPress

  • Home
  • About
  • Blog
  • Code Snippets
You are here: Home / Code Snippets / Override the WP random password generator with custom generator

Override the WP random password generator with custom generator

November 9, 2020

 // Override the WP random password generator with a custom random password.
add_filter( 'random_password', 'my_random_password' ); 
function my_random_password() {
    
    // Define password length
    $len = 15;
    
    // Define character sets (lower, upper, numbers, special, extra).
    $chars = array( 'lower', 'upper', 'numbers', 'special' );
    
    // Nothing to change here. Return new value.
    return my_password_generator( $chars, $len );
}

/**
 * Generate a random password.
 * 
 * This utility function can be used as-is, or you can
 * edit/add to the $chars array for custom string sets.
 * 
 * @param array $chars {
 *    @type string $lower   All lowercase characters. 
 *    @type string $upper   All uppercase characters.
 *    @type string $numbers All numbers 0-9,
 *    @type string $special Common special characters.
 *    @type string $extra   Extra special characters.
 *  }
 * @param   $len      string The password length to generate.
 * @return  $password string The generated password.
 */
function my_password_generator( $chars, $len ) {
    
    $available_chars = array(
        'lower'   => 'abcdefghijklmnopqrstuvwxyz',
        'upper'   => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'numbers' => '0123456789',
        'special' => '!@#$%^&*()',
        'extra'   => '-_ []{}<>~`+=,.;:/?|',
    );
    
    $char_string = '';
    foreach( $chars as $char_set ) {
        $char_string .= $available_chars[ $char_set ];
    }
    
    $password = '';
    for( $i = 0; $i < $len; $i++ ) {
        $password .= substr( $char_string, wp_rand( 0, strlen( $char_string ) - 1 ), 1 );
    }
    
    return $password;
}

Chad Butler

Primary Sidebar

Join for free!

Get free code snippets, WordPress best practices, and practical Content Marketing advice from seasoned WordPress expert Chad Butler (butlerblog):

Recent Posts

  • How to Run WP-CLI on Windows
  • Get an array of variation IDs for a WooCommerce product
  • Check and delete orphaned post meta in WordPress
  • Block an IP address from accessing your site
  • Using WordPress Debug Constants

Copyright © 2022 · Maker Pro on Genesis Framework · WordPress · Log in