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?
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.';
}