Ajouter automatiquement une signature à ses articles wordpress

Suite à la demande d’un ami qui voulait ajouter automatiquement une signature à ses articles wordpress, j’ai effectué quelques recherches afin d’ajouter cela juste après le contenu du billet. Le fait d’ajouter la signature à la main dans chaque article n’a pas été envisagé, pour deux raisons : le fait de ne pas pouvoir modifier la signature comme l’on veut sur tous les articles, et le fait d’en avoir près de 150.

J’ai donc entrepris quelques recherches, car même si je connais wordpress depuis un moment, je ne manipule pas son code pour autant. J’ai souvent vu la même chose qui revenait, quelques lignes de php à mettre dans le fichier functions.php du CMS (wp-includes/functions.php). Très bien, donc je m’y colle, les voici :

function post_signature($sign) {
    global $post;
    if ($post->post_type == 'post') {
        $sign .= " 
              <div class=\"signature\">
              <img style=\"margin-bottom:40px;\" src=\"http://mon-lien/vers/mon/img.jpg\"/>
              </div>
                 ";
    }
 }
add_filter('the_content', 'post_signature', 1);   # Le 1 est la priorité pour l'exécution de la fonction.

C’est excellent me direz-vous, ça fonctionne très bien. En effet, même un peu trop bien pour tout vous dire : la signature est ajoutée à la fin des extraits (posts excerpt). Car oui les extraits d’articles et bien… ce sont tout de même des articles, en quelque sorte. Je ne sais pas où les gens qui ont écrit ça avaient la tête, mais ce bout de code n’est pas complet (ou plus exactement pas adapté pour mettre une signature).

J’ai donc continué mes recherches, et ai trouvé un autre moyen de cibler les articles quand il sont complets, le voici :

 if (is_singular() && is_main_query()) {

Cette fois c’est nettement mieux, la signature est affichée sur les articles lors qu’ils sont complets, et non sous forme d’extraits ou d’aperçus. Ceci étant il manque un petit réglage. Nous avons bien is_singular qui va vérifier que nous sommes bien en présence d’un type particulier de page (par défaut, poste, page, ou attachement). Egalement nous avons bien is_main_query qui nous évite d’englober les extraits d’articles visibles en archive ou sur la page d’index… Mais nous on ne veut QUE les articles / billets / posts (rayer la mention inutile). Il faut donc ajouter ceci :

 if (is_singular('post') && is_main_query()) {

Ce qui nous donne ceci comme version finale de ce petit extrait de code :

function post_signature($sign) {
    if (is_singular('post') && is_main_query()) {
        $sign .= "
                  <div class=\"signature\">
                  <img style=\"your CSS\" src=\"http://mon-site/mon/image.jpg\"/>
                  </div>
                 ";
    } 
    return $sign;
}
add_filter('the_content', 'post_signature', 1);

Et ça y’est on a terminé.

 

Lu 192 fois

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *