web-dev-qa-db-fra.com

Shortcode pour générer et enregistrer le mot de passe dans un fichier

J'ai le shortcode suivant:

// Add Shortcode
function custom_shortcode_phptest() {

  function generatePassword($length = 6) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$pass = '';
for ($i = 0; $i < $length; $i++) {
$pass .= $characters[Rand(0, $charactersLength - 1)];
}
return $pass;
}

$password = generatePassword();

$data = time();

$test = '/home/blablabla/public_html/ot/docs/test/' . $password . '.txt';
$file = fopen($test,"w");
fwrite($file,$data);
fclose($file);
echo 'Your pass is ' . $password . ' and it is valid for 3 days.';

}
add_shortcode( 'phptest', 'custom_shortcode_phptest' );

Il va générer un mot de passe et l'enregistrer dans un fichier. Mais lorsque j'utilise [phptest] shortcode dans un courrier électronique envoyé depuis le panneau d'administration Wordpress, cela ne fonctionne pas. Est-il possible d'utiliser la fonction dans la fonction en shortcode php?

1
File_Submit

D'après le commentaire sous la question du PO, voici la solution en utilisant un return au lieu d'un echo:

add_shortcode( 'phptest', 'custom_shortcode_phptest' );
function custom_shortcode_phptest() { // Add Shortcode

    function generatePassword( $length = 6 ) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen( $characters );
        $pass = '';
        for ( $i = 0; $i < $length; $i++ ) {
            $pass .= $characters[Rand( 0, $charactersLength - 1 )];
        }
        return $pass;
    }

    $password = generatePassword();

    $data = time();

    $test = '/home/blablabla/public_html/ot/docs/test/' . $password . '.txt';
    $file = fopen( $test, "w" );
    fwrite( $file, $data );
    fclose( $file );
    return 'Your pass is ' . $password . ' and it is valid for 3 days.';
}
3