web-dev-qa-db-fra.com

Comment empêcher la macro tinymce d'insérer nbsp ;?

Le bouton de macro suivant a été défini pour envelopper une sélection dans un shortcode dans l'éditeur visuel wp_editor:

(function() {
tinymce.create('tinymce.plugins.ingredient_name', {

    init : function(ed, url){
        ed.addButton('ingredient_name', {
        title : 'Tag ingredient',
        onclick : function() {
            var text=ed.selection.getContent({'format':'text'});
            ed.execCommand('mceInsertContent',false,'[ingredient_name]' + text + '[/ingredient_name]');
        },
            image: url + "/name.png"
        });
    }
});

tinymce.PluginManager.add('ingredient_name', tinymce.plugins.ingredient_name);

})();

La macro fonctionne comme prévu, sauf que tinymce insère également & nbsp devant le shortcode résultant. Donc, au lieu de ce résultat:

1 [ingredient_name]pound[/ingredient_name] salami

J'ai compris:

1 [ingredient_name]pound[/ingredient_name] salami

ceci est en quelque sorte mutilé lors de l'insertion dans la base de données et rendu dans le modèle, je reçois un "salami de 1 livre". Je peux revenir en arrière et supprimer les infractions, mais je préférerais à tinyMCE de ne pas insérer cette entité en premier lieu. Des idées?

1
elleeott

eh bien, il s’est avéré que ce n’était pas du tout un problème de petite mce, mais un document DOM php qui filtrait la sortie de tinyMCE, interprété dans le mauvais jeu de caractères, puis transmettant des caractères parasites à la page.

Amusement!

1
elleeott

L'éditeur TinyMCE WYSIWYG convertit les symboles d'espace en entités   par défaut. Cela est dû au fait que la propriété par défaut entities est définie pour convertir les symboles d'espace en entités  :

entities: "160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro...."

Pour résoudre ce problème, vous devez redéfinir la propriété entities init. Par exemple:

tinyMCE.init({
    entities: "38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade"
});

Pour initialiser les options de TinyMCE dans WordPress, vous devez ajouter votre propre hook au filtre tiny_mce_before_init:

function wpse8170_change_mce_options($initArray) {
    // other settings...
    $initArray['entities'] = '38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade'; 

    return $initArray;
}

add_filter('tiny_mce_before_init', 'wpse8170_change_mce_options');

La liste complète des valeurs, que vous pouvez ajuster, peut être consultée à la page TinyMCE Configuration Et le dernier lien pour entités option.

0
Eugene Manuilov