WordPress : ajouter des événements dans l’iframe TinyMCE
J’ai ajouté des styles d’emballage div à WordPress, mais lorsque je les utilise dans la page, il est impossible d’ajouter du contenu en dessous d’eux dans la page. CSS:after fonctionne à l’intérieur des divs pour créer une zone sélectionnable, mais cela ne fonctionne pas pour créer une zone sélectionnable après la div.
Dans mon functions.php j’ai :
function my_mce_before_init( $settings ) {
$style_formats = array(
array(
'title' => 'Box Two Columns',
'block' => 'div',
'classes' => 'twocolbox',
'wrapper' => true
),
array(
'title' => 'Image with Caption',
'block' => 'div',
'classes' => 'img_caption',
'wrapper' => true
),
array(
'title' => 'Gallery Horizontal',
'block' => 'div',
'classes' => 'scroller horizontal',
'wrapper' => true
)
);
$settings['style_formats'] = json_encode( $style_formats );
return $settings;
}
add_filter('tiny_mce_before_init', 'my_mce_before_init');
add_editor_style();
Existe-t-il un moyen d’utiliser execCommand ici pour ajouter du code HTML après les styles div que j’ai définis? Ajouter ensuite quelque chose comme une balise de paragraphe vide avec un flotteur clair ?
J’ai essayé:
tinyMCE.execCommand('mceInsertContent',false,'Hello world!!');"
L’éditeur MCE se casse alors.
… J’ai essayé ceci mais c’est trop bogué : Dans editor-styles.css :
#tinyMCE:after {
content: " ";
clear:both;
width: 4em; height:4em;
}
Notez que vous devrez peut-être vider le cache ET le bouton shift-reload pour voir les modifications apportées à editor-styles.css dans WordPress.
…
Je travaille toujours là-dessus. Trouvé un fil: Pour accéder aux éléments iframe minuscules via jquery
J’ai essayé d’ajouter le code de ce fil à my_mce_before_init, mais il s’est juste cassé.
…. J’ai également essayé de charger un script jQuery, mais les chemins cibles ne fonctionneraient pas sur l’iframe TinyMCE. Aucun de ces sélecteurs ne fonctionne :
jQuery(document).ready(function($) {
$("#tinyMCE").find("div").after('<p style="width:100%; clear:both; height:1em;"> 6789</p>');
$("div").css("color","red");
$("#content_ifr").contents().find("div").after('<p style="width:100%; clear:both; height:1em;"> 6789</p>');
$("#content_ifr").contents().find("#tinymce p").css("color","red");
$("#wp-content-editor-container").find("textarea").css("color","red");
$("iframe").contents().find("p").css("color","red");
$('#content_ifr').load(function(){
$('#content_ifr').contents().find('p').css("color","red");
});
});
Solution n°1 trouvée
Vous pouvez ajouter des pseudo-éléments html à l’aide de l’option de configuration tinymce content_css. Là, vous pouvez définir après les éléments. Essaie!
Mise à jour:
Lors de l’initialisation de tinymce, définissez le paramètre de configuration sur ce qui suit (à l’intérieur de tinyMCE.init({...}
)
...
theme: "advanced", // example param
setup : function(ed) {
ed.onInit.add(function(ed, evt) {
$("#content_ifr").contents().find("p").css("color","red");
// other approach
//$(ed.getBody()).find('p').css("color","red");
});
},
cleanup: true, // example param
...
0 commentaire