Modifier le contenu d’un article WordPress automatiquement

#wordpress

Pour changer, un petit tutoriel WordPress autour d’un problème tout simple : Modifier à la volé le contenu de the_content avant son affichage.

Pourquoi ?

Il arrive parfois que l’on ai besoin d’ajouter une classe à un element comme par exemple <a href= »… »>source</a> sans avoir à ajouter de class dans l’éditeur de texte de l’article, ou encore supprimer des mots que vous placez trop souvent pour les remplacer par d’autres. Mais aussi, et c’est plus intéressant, changer tout les liens dans vos articles en cas de changement de nom de domaine par exemple. C’est moins propre que directement en base de données, mais ça marche aussi !

Comment ?

Pour le coup c’est très simple, il suffit d’ajouter ces quelques lignes dans le fichier functions.php.

<?php
function update_content($text){
 $replace = array(
 '>source</a>' => ' class="via_source">source</a>'
 );
 $text = str_replace(array_keys($replace), $replace, $text);
 return $text;
}
add_filter('the_content', 'update_content');

Comme vous pouvez le voir il est possible d’ajouter autant de modification que vous en avez envie, pour cela il suffit d’ajouter des lignes dans l’array.

A noter que si vous cherchez d’autres bout de code, le « Labs » pourrait peut-être vous intéresser ! Allez y faire un tour.

Laisser un commentaire

2 commentaires

  1. On peut limite faire cela directement en CSS sans ajouter de class !

    Si on connait la source, on connait donc son adresse URL. Par exemple, si l’on souhaite modifier toutes les URLs qui seraient des pages Facebook, par exemple, et bien il suffit de cibler les liens de cette façon en CSS :

    a[href*=facebook.com] { /* suite du code */ }

    Voilà 🙂

    0
    • Flox

      Merci pour l’info, je connaissais pas !
      Ça peut être très utile.

      Dans le cas du snippet de l’article, c’est aussi pour différencier les href classiques de ceux mis en source par exemple, qui peuvent être du même type.

      0