web-dev-qa-db-fra.com

Contenu de publication, caractères spéciaux et filtres

J'ai ajouté un crochet à the_content.

add_filter('the_content', 'edit_the_content');
function edit_the_content($content){
    return $content;
}

Assez simple non?

Cependant, lorsqu’il affiche $content depuis mon rappel edit_the_content(), il semble que WordPress convertisse certains caractères, mais pas tous, en caractères spéciaux.

Exemple:

c'est = it’s

mais alors une balise d'ancrage reste intacte et non convertie.

Existe-t-il une sorte de filtre qui fonctionne sur the_content qui ne convertit que certains caractères en caractères spéciaux, mais pas tous?

1
Michael Ecklund

En utilisant un extrait de code comme ceci :

$hook_name = 'the_content';
global $wp_filter;
var_dump($wp_filter[$hook_name]);

J'ai pu trouver une liste de toutes les fonctions de rappel accrochées au filtre WordPress: the_content.

J'ai ensuite localisé quelques coupables possibles, puis cherché leur existence.

Après avoir réduit ma liste, je suis parvenu à la conclusion sur la fonction de rappel accrochée à l'origine du problème.

Dans le fichier ./wp-includes/default-filters.php sur ligne 135 à partir de WordPress 3.6 , il existe une fonction raccordée add_filter('the_content', 'wptexturize');

Dans le fichier ./wp-includes/formatting.php sur ligne 29 à partir de WordPress 3.6 se trouve la définition de la fonction de wptexturize() .

/**
 * Replaces common plain text characters into formatted entities
 *
 * As an example,
 * <code>
 * 'cause today's effort makes it worth tomorrow's "holiday"...
 * </code>
 * Becomes:
 * <code>
 * &#8217;cause today&#8217;s effort makes it worth tomorrow&#8217;s &#8220;holiday&#8221;&#8230;
 * </code>
 * Code within certain html blocks are skipped.
 *
 * @since 0.71
 * @uses $wp_cockneyreplace Array of formatted entities for certain common phrases
 *
 * @param string $text The text to be formatted
 * @return string The string replaced with html entities
 */

Comment empêcher WordPress de formater des caractères the_content en entités HTML?

remove_filter('the_content', 'wptexturize');

Leçon apprise. En utilisant cet extrait de code au début de cette réponse, vous pourrez ... au minimum, trouver toutes les fonctions de rappel attachées à un hook WordPress particulier. Ce qui est un bon début, le reste peut prendre un peu de recherche et de lire ce que fait chaque fonction de rappel.

1
Michael Ecklund