J'utilise wp_editor
pour ajouter des champs wysiwyg aux écrans d'édition des administrateurs. Chaque wysiwyg réside dans une méta-boîte déplaçable. Depuis que TinyMCE a des problèmes de glisser, j'utilise le code suivant:
// on the dragstart event
tinyMCE.execCommand('mceRemoveControl', false, the_editor_id);
// on the dragstop event
tinyMCE.execCommand('mceAddControl', false, the_editor_id);
Le problème est que, lorsque mceAddControl
est activé, toutes les nouvelles lignes et les sauts de ligne sont supprimés du texte. Quelqu'un at-il été capable de résoudre ce problème?
Avant le dragstart:
Après le dragstop:
Il s'avère que TinyMCE a son propre paramètre autop
, donc si vous le tuez avant le tri et que vous le remettez ensuite, vous devriez être prêt à partir!
Découvrez la manipulation du paramètre autop
dans cet extrait:
<script>
(function($) {
// by default, wpautop will be true
var wpautop = true;
// this function wraps subsequent additions of TinyMCE
$(function() {
// save the original state of TinyMCE's wpautop
wpautop = tinyMCE.settings.wpautop;
// bind to our custom event that fires when a new TinyMCE is added
$(document).on( 'attachments/new', function( event ) {
// initialize the applicable TinyMCE instances
$('.attachments-field-wysiwyg:not(.ready)').init_wysiwyg();
});
// initialize the applicable TinyMCE instances
$('.attachments-field-wysiwyg').init_wysiwyg();
});
// init TinyMCE
$.fn.init_wysiwyg = function() {
this.each(function() {
// a flag for this instance
$(this).addClass('ready');
var input_id = $(this).attr('id');
// create wysiwyg
tinyMCE.settings.theme_advanced_buttons2 += ',code'; // add HTML button
tinyMCE.settings.wpautop = false; // force wpautop to false to preserve linebreaks
tinyMCE.execCommand('mceAddControl', false, input_id); // add TinyMCE control
tinyMCE.settings.wpautop = wpautop; // reset the original wpautop setting
});
};
// bind to our custom event that fires when sorting starts
$(document).on('attachments/sortable_start', function(event, ui) {
// force wpautop to be false (and by doing so preserve our line breaks)
tinyMCE.settings.wpautop = false;
$('.attachments-field-wysiwyg').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, $(this).attr('id'));
});
});
// bind to our custom event that fires when when sorting starts
$(document).on('attachments/sortable_stop', function(event, ui) {
$('.attachments-field-wysiwyg').each(function() {
tinyMCE.execCommand('mceAddControl', false, $(this).attr('id'));
});
// reset the original wpautop setting
tinyMCE.settings.wpautop = wpautop;
});
})(jQuery);
</script>
Extrait extrait de mon plugin WordPress, Pièces jointes: https://github.com/jchristopher/attachments/blob/3.3.2/classes/fields/class.field.wysiwyg.php