Désactiver wptexturize pour empêcher WordPress de remplacer les caractères

fonction wptexturize wordpress typographie

Qu’est-ce que la fonction wptexturize ?

Wptexturize est une fonction intégrée à WordPress qui transforme les caractères de texte courants en leur équivalent typographiquement correct. Elle a été conçue pour améliorer l’aspect et la lisibilité de votre contenu.

Ainsi, la fonction wptexturize est une véritable perle de WordPress ! Ou une véritable plaie, comme vous préférez. Car telle un artiste invisible, wptexturize travaille dans l’ombre pour embellir votre contenu – ou le pourrir, au choix.

Par exemple, wptexturize convertit les simples et doubles guillemets droits (‘ ou « ) en guillemets courbés typographiques (‘, ’, “, ou ”), qui sont généralement plus agréables à l’œil dans une page web.

De même, elle transforme les simples tirets (-) en tirets demi-cadratins (– ) ou cadratins (—), les trois points (. . .) en véritables points de suspension (…), et convertit d’autres caractères spéciaux.

Et dans mon cas, récemment, wptexturize remplace les doubles tirets par des tirets larges, correspondant au caractère « tiret large » en HTML. On pourrait croire que c’est bien, car les doubles tirets ne peuvent être qu’une erreur de typo, une faute de frappe ?

Sauf que non : avec Midjourney, les doubles tirets servent à noter certains types d’instruction (comme – -no, – -ar, etc… pour pouvoir vous les montrer je dois ajouter un espace entre les tirets…), or j’avais écrit tout un tutoriel Midjourney précisément pour expliquer ces instructions, donc je n’étais pas très content quand j’ai constaté que wptexturize me remplaçait systématiquement les bons codes par des codes erronés. Voilà un programme qui, en voulant m’aider, me complique la vie.

Quels caractères sont transformés par wptexturize ?

Voyons plus précisément ce que fait la fonction wptexturize. Laissez-moi vous donner quelques exemples concrets :

  • Les guillemets simples droits (‘ ou ‘) se métamorphosent en ‘ ou ’
  • Les guillemets doubles droits ( » ou « ) deviennent “ ou ”
  • Les doubles tirets ou même les triples (– ou —) sont transmutés en de jolis tirets demi-cadratins (–) ou cadratins (—)
  • Les trois points (…) se transforment en élégants points de suspension (…)
  • Les guillemets simples dans les contractions comme « c’est » restent tels quels. (En voilà une fonction intelligente !)

Je tiens à préciser que le comportement de wptexturize peut varier selon votre configuration WordPress et la langue de votre site web.

Comment désactiver wptexturize pour empêcher WordPress de transformer les caractères ?

Malgré toute l’estime que j’ai envers l’honorable fonction wptexturize, je trouve qu’elle peut parfois se montrer un peu trop zélée.

Heureusement, comme la plupart des choses dans WordPress, elle se plie à la loi du plus fort et le plus fort c’est toi, c’est moi : nous pouvons la désactiver !

Voici comment faire :

  1. Ajoutez le code suivant au fichier functions.php (celui de votre thème ; et assurez-vous que vous éditez le thème enfant et pas le thème lui-même, sinon votre modification sera effacée à la prochaine mise à jour du thème). Ce code crée une nouvelle fonction qui renvoie le texte d’origine sans le passer à wptexturize.
    function no_wptexturize($text) {
        return $text;
    }
  2. Ensuite, appliquez cette nouvelle fonction pour désactiver wptexturize pour le contenu de votre choix. Par exemple, pour le contenu de vos articles, ajoutez ce code à votre fichier functions.php :
    remove_filter('the_content', 'wptexturize');
    add_filter('the_content', 'no_wptexturize');

Ce code supprime le filtre wptexturize pour le contenu de l’article, puis ajoute votre nouvelle fonction qui ne modifie pas le texte.

Je ne peux pas assez insister sur l’importance de la prudence lorsque vous modifiez le fichier functions.php. Assurez-vous de sauvegarder votre site avant d’apporter des modifications, et testez-les soigneusement pour éviter des surprises désagréables. Le monde maya s’est effondré pour moins que ça.

Recoder la fonction wptexturize pour pouvoir sélectionner les remplacements qu’elle fait (désactivation partielle)

Y a-t-il un moyen pour ne désactiver wptexturize que partiellement ? Par exemple, qu’elle continue à traiter tous ses remplacements sauf l’un, genre mes doubles tirets ?

Pour sélectionner les remplacements que la fonction wptexturize fait, vous pourriez créer une fonction personnalisée qui utilise une partie du code de la fonction wptexturize originale. La nouvelle fonction pourrait être ajoutée dans le fichier functions.php de votre thème enfant, comme nous l’avons fait ci-dessus.

La fonction wptexturize originale est assez longue et complexe, et WordPress étant un CMS international, elle prend en compte de nombreuses particularités linguistiques et typographiques. Mais en simplifiant, voici comment vous pourriez créer une fonction personnalisée qui ne réalise que certains remplacements :

function custom_wptexturize($text) {
    // Tableau des caractères à remplacer
    $replacement_table = array(
        '...'     => '…',
        '---'     => '—',
        '--'      => '–',
        '"'       => '”',
        "'"       => '’',
        // Ajoutez ou supprimez des éléments du tableau en fonction de vos besoins
    );

    // Remplacement des caractères
    foreach ($replacement_table as $old => $new) {
        $text = str_replace($old, $new, $text);
    }

    return $text;
}

// Remplacement de la fonction wptexturize par votre fonction personnalisée
remove_filter('the_content', 'wptexturize');
add_filter('the_content', 'custom_wptexturize');

Par exemple, on pourrait améliorer wptexturize en l’adaptant à la typographie française pour lui faire mieux gérer les espaces insécables en HTML, transformant les espaces + point d’interrogation en espace insécable + point d’interrogation, etc.

En fin de compte, wptexturize est un outil sympa qui peut embellir votre site WordPress en évitant des erreurs de typographie assez communes. Cependant, comme tout bon outil, il est important de savoir comment l’utiliser efficacement pour obtenir les résultats souhaités.

Un autre filtre qui devient pénible comme un enfant qui devient ado, c’est autop, qui efface vos paragraphes notamment dans Elementor, sans vous avoir demandé votre avis ! En voilà des manières !

Qu'avez-vous pensé de cet article ?

Cliquez sur une étoile pour donner votre avis

Avis moyen 5 / 5. Nombre d'avis donnés 6

Soyez le premier à donner votre avis



Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Besoin d'un hébergeur ?

Convivial, sympa, fiable, et pas cher,
O2Switch me semble être la meilleure offre actuellement sur le marché français.
C'est pourquoi j'y héberge tous mes sites. Hébergement O2Switch
Panier
//
Retour en haut