web-dev-qa-db-fra.com

Comment puis-je empêcher une fonction d'encoder une entité?

J'utilise le code ci-dessous dans mon functions.php pour pré-renseigner de nouveaux messages.

Cela fonctionne bien, sauf si j'utilise des entités (exemple: »), qui sont converties (exemple: ") lorsque j'ouvre la page de modification d'un nouveau message.

Je préfère les garder non convertis.

add_filter( 'default_content', 'pu_default_editor_content' );

function pu_default_editor_content( $content ) {
  global $post_type;
  switch( $post_type ) {
    case 'post':
      $content = 'Default content for blog posts.';
    break;
  }
  return $content;
}
2
glvr

Contenu de l'éditeur par défaut

Voici une version mise à jour de la fonction pu_default_editor_content() qui tiendra compte du moment où un utilisateur aura désactivé Visual Editor (selon votre commentaire).

function pu_default_editor_content( $content ) {
    global $post_type;

    switch( $post_type ) {
        case 'post' :
            $content = 'Default content for blog posts. » » »';
            $rich_editing = get_user_option( 'rich_editing', get_current_user_id() );

            if ( 'false' === $rich_editing ) {
                $content = htmlspecialchars( $content );
            }   
        break;
    }

    return $content;
}
add_filter( 'default_content', 'pu_default_editor_content' );

Affichage de texte enrichi désactivé

 editor-default-content-rich-text-disabled  L'utilisateur a Editeur visuel désactivésous Utilisateur> Profil .

TinyMCE/QuickTags

Si Visual Editor est activé, ce qui correspond à la configuration par défaut, TinyMCE devra être configuré pour afficher les entités nommées. Le codage est appliqué par TinyMCE, mais ce comportement peut être personnalisé via le hook tiny_mce_before_init. Merci à cette réponse pour le conseil.

Ajoutez des entités supplémentaires dont vous pourriez avoir besoin à la chaîne $settings['entities']. La documentation sur le formatage est ici :

Cette option contient une liste de noms d'entités, séparés par des virgules, utilisés à la place de caractères. Les éléments impairs sont le code de caractère et les éléments pairs sont le nom du code de caractère.

// Custom configuration for TinyMCE
function wpse241282_tiny_mce_before_init( $settings, $editor_id ) {

    // Used named encodings (the default setting in WordPress is raw).
    // https://www.tinymce.com/docs/configure/content-filtering/#encodingtypes
    $settings['entity_encoding'] = 'named';

    // Default entities for TinyMCE: 38,amp,60,lt,62,gt1
    // Additional entities: copy, reg, trade, service mark, euro, right angle quote, left angle quote
    // The odd entires are the entity *number*, the even entries are the entity *name*. If the entity has no name,
    // use the number, prefixed with a hash (for example, the service mark is "8480,#8480").

    $entities = '169,copy,174,reg,8482,trade,8480,#8480,8364,euro,187,raquo,171,laquo';

    if ( isset( $settings['entities'] ) && ! empty( $settings['entities'] ) ) {
        $settings['entities'] .= ',' . $entities;
    } else {
        $settings['entities'] = $entities;
    }
    return $settings;
}
add_filter( 'tiny_mce_before_init', 'wpse241282_tiny_mce_before_init', 10, 2 );
add_filter( 'quicktags_settings', 'wpse241282_tiny_mce_before_init', 10, 2 );

Visual Editor activé

 enter image description here  L'utilisateur a Visual Editor enabledsous Utilisateur> Profil .

1
Dave Romsey