J'essaie d'activer l'éditeur tinyMCE de WordPress pour une zone de texte frontale, à partir de la version professionnelle d'un plugin.
J'ai temporairement résolu le problème dans unfauxmanière:
En version gratuite:
wp_editor(
$details_val, //content
'pre-details', //editor ID
array('tinymce'=>false),
);
Ensuite, à partir de la version professionnelle, avec un crochet de filtre, définissez la valeur 'tinymce' sur true
. Hahaha...
Voici ma zone de texte sur le front-end:
<textarea class="tinymce-enabled" rows="5" cols="40" name="pre_details" id="pre-details"><?php echo $details_val; ?></textarea>
J'ai essayé la fonction suivante dans jQuery:
jQuery(document).ready(function($) {
tinymce.init({
selector :"pre-details",
mode : "specific_textareas",
theme : "simple",
editor_selector :"tinymce-enabled"
});
});
Et les fichiers sont appelés de la manière suivante:
function pre_scripts() {
if( is_page('xyz') ) {
wp_enqueue_script( 'pre-scripts', Pre()->plugin_url() .'/assets/js/pre-scripts.min.js', array('jquery', 'tiny_mce'), Pre()->version, true );
}
}
add_action( 'wp_enqueue_scripts', 'pre_scripts' );
Tout d'abord, si je n'utilise pas la dépendance 'tiny_mce'
, la tinymce.init()
affiche une erreur indiquant que cette fonction n'a pas été trouvée, mais mon script personnalisé se charge. Mais si j'ajoute la dépendance 'tiny_mce'
, mon script personnalisé ne se charge même pas. Mais le crochet est mentionné dans les ressources de développement .
J'ai trouvé ce fil WPSE , qui suggère que c'est un problème séculaire. Mais la solution de contournement représentée ici ne résout pas mon problème.
J'ai aussi essayé différentes versions:
$(function() {
$('textarea.tinymce-enabled').tinymce({
mode : "specific_textareas",
theme : "simple",
});
});
et
tinyMCE.execCommand('mceAddControl', false, 'pre-details');
Mais pas de chance. Parce que cette dépendance met mon script en file d'attente,
ou, les méthodes alternatives de chargement des scripts de base tinymce ne sont pas conformes à mes scripts.
Comment puis-je charger l'éditeur tinyMCE Rich Text de WordPress dans une zone de texte en front-end sans utiliser wp_editor()
, mais de manière pluggable?
Si vous n'avez pas besoin de wp_editor en front-end, je pense que c'est OK. Voici un peu différentes options avec votre init tinymce. J'utilise ceci sans wp_editor en front-end.
<script>
jQuery( document ).ready( function( $ ) {
tinymce.init( {
mode : "exact",
elements : 'pre-details',
theme: "modern",
skin: "lightgray",
menubar : false,
statusbar : false,
toolbar: [
"bold italic | alignleft aligncenter alignright | bullist numlist outdent indent | undo redo"
],
plugins : "paste",
paste_auto_cleanup_on_paste : true,
paste_postprocess : function( pl, o ) {
o.node.innerHTML = o.node.innerHTML.replace( / +/ig, " " );
}
} );
} );
</script>
pour obtenir du contenu
tinymce.get('pre-details').getContent()
Dans WP function wp_enqueue_scripts
wp_enqueue_script( 'tinymce_js', includes_url( 'js/tinymce/' ) . 'wp-tinymce.php', array( 'jquery' ), false, true );
Vous pouvez mettre en file d'attente editor.min.css pour votre style.