neoDSI   CTO & Développeur back-end symfony
+33 6 62 75 87 89 Contact

Faire un shortcode pour injecter un résultat de code php dans wordpress

But

Il peut être utile de créer un shortcode afin d’injecter un résultat de code php dans un article ou une page.

Dans l’exemple suivant le shortcode permet de déterminer l’age en fonction de la date de naissance que l’on passera en paramètre de notre shortcode sous la forme naissance='jj/mm/aaaa'

Code

1. Tout d’abord il faut ajouter une fonction dans le fichier functions.php qui se situe à la racine du thème que l’on utilise.

/*
 * Retourne l'age en année à partir d'une date de naissance au format jj/mm/aaaa
 * array $atts date de naissance
 * string age en années
 */
function age($atts) {
    $naiss['Y'] = substr($atts['naissance'], 6);
    $naiss['n'] = (int) substr($atts['naissance'], 3, 2);
    $naiss['j'] = (int) substr($atts['naissance'], 0, 2);
    $an = date('Y')-$naiss['Y'];
    if ( date('n') < $naiss['n'] || (date('n') == $naiss['n'] && date('j') < $naiss['j']) )
        $an = $an -1;
    $an .= ' ans';
    if ( date('n') == $naiss['n'] && date('j') == $naiss['j'] )
        $an .= ' aujourd\'hui !!';
    return $an;
}

La fonction prend donc un argument atts de type array qui va contenir tous les arguments que l'on passe à notre shortcode. Dans notre exemple, un seul argument naissance qui sera sous la forme jj/mm/aaaa

On traite l'argument naissance sur les 3 premières lignes, puis on effectue le calcul en ajoutant éventuellement une précision si on est le jour même.

Enfin on revoie la chaine de caractères représentant l'age.

2. Il suffit alors de déclarer le shortcode juste en dessous de la fonction.

add_shortcode('neodsi_mon_age','age');

Le premier argument est le nom du shortcode, et le deuxième est le nom de la fonction qui effectue le traitement.

Utilisation

Le shortcode est placé dans un article ou une page  de la façon suivante :

J'ai [neodsi_mon_age naissance='20/08/1974']

ce qui donnera :  J'ai 49 ans