wake-up-neo.com

Wie kann ich verhindern, dass Tinymce-Makros nbsp einfügen?

Ich habe die folgende Makro-Schaltfläche definiert, um eine Auswahl in einen Shortcode im visuellen Editor von wp_editor einzufügen:

(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);

})();

Das Makro funktioniert wie vorgesehen, mit der Ausnahme, dass tinymce auch & nbsp vor dem resultierenden Shortcode einfügt. Anstelle dieses Ergebnisses:

1 [ingredient_name]pound[/ingredient_name] salami

Ich bekomme das:

1 [ingredient_name]pound[/ingredient_name] salami

dies wird dann irgendwie beim Einfügen in die DB entstellt und in die Vorlage gerendert, ich bekomme "1 Pfund Salami". Ich kann zurückgehen und die beleidigenden & nbsp's entfernen, aber ich würde es vorziehen, dass tinyMCE diese Entität nicht an erster Stelle einfügt. Irgendwelche Ideen?

1
elleeott

nun, es stellte sich heraus, dass es sich überhaupt nicht um ein Problem mit tiny mce handelte, sondern um ein PHP-DOM-Dokument, das die Ausgabe von tinyMCE filterte, im falschen Zeichensatz interpretierte und dann Müllzeichen an die Seite weitergab.

Spaß!

1
elleeott

Der TinyMCE WYSIWYG-Editor konvertiert Leerzeichen standardmäßig in   -Entitäten. Dies liegt daran, dass die Standardeigenschaft entities so festgelegt ist, dass Leerzeichen in   -Entitäten konvertiert werden:

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...."

Um dieses Problem zu beheben, müssen Sie die Eigenschaft entities init neu definieren. Zum Beispiel:

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

Um die TinyMCE-Optionen in WordPress zu initialisieren, müssen Sie dem tiny_mce_before_init-Filter Ihren eigenen Hook hinzufügen:

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');

Die vollständige Liste der Werte, die Sie anpassen können, finden Sie unter TinyMCE-Konfiguration Seite. Und der letzte Link für Einheiten Option.

0
Eugene Manuilov