L'aviez-vous remarqué ? Avec l'arrivée de WordPress 3.4, la fonction add_editor_style() permettant d'ajouter un fichier CSS dans l'entête de l'éditeur TinyMCE a subit une petite régression : il n'est plus possible d'ajouter un paramètre à la fin de l'url du fichier. Cette fonctionnalité étant très importante pour moi, j'ai trouvé comment contourner le problème.
Importante me direz-vous ? Oui, car lorsque je modifie ce fichier CSS, le cache empêche sa mise à jour dans l'éditeur (et je n'ai pas trouvé comment le contourner... A vrai dire je n'ai pas cherché).
La fonction de remplacement
Donc voilà, heureusement un filtre est venu à ma rescousse. A mettre dans le fichier functions.php de votre thème :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function w3p_add_editor_style( $files = '' ) {
if ( !$files ) return;
$style_uri = is_child_theme() ? get_template_directory_uri() : get_stylesheet_directory_uri();
$style_dir = is_child_theme() ? get_template_directory() : get_stylesheet_directory();
if ( !is_array($files) )
$files = explode(',', $files);
$out = array();
if ( count($files) ) {
foreach ($files as $file) {
if ( $file = trim($file) ) {
$rtl_file = str_replace('.css', '-rtl.css', $file);
if ( file_exists(reset(explode('?', $style_dir.'/'.$file))) )
$out[] = $style_uri.'/'.$file;
if ( is_rtl() && file_exists(reset(explode('?', $style_dir.'/'.$rtl_file))) )
$out[] = $style_uri.'/'.$rtl_file;
}
}
}
if ( !count($out) )
return;
$out = implode(',', $out);
add_filter( 'mce_css', create_function('$mce_css', 'return $mce_css.($mce_css ? "," : "")."'.$out.'";') );
} |
Je n'ai pas testé avec un thème enfant, donc faites moi savoir si vous rencontrez un problème.
Utilisation
C'est simple, faites comme vous faisiez avec add_editor_style().
La fonction accepte comme argument un nom de fichier sous forme de chaîne de caractères, une liste de fichiers séparés par une virgule sous forme de chaîne de caractères, ou un tableau :
1 2 3 | w3p_add_editor_style( 'editor-style.css?v=122' );
w3p_add_editor_style( 'editor-style.css?v=122,editor-style2.css?v=2' );
w3p_add_editor_style( array('editor-style.css?v=122', 'editor-style2.css?v=2') ); |
See ya !











5 commentaires
Ha content de voir que tu as réussi ça, balèse ! :)
Merci pour le partage 8)
Ah merci pour ce partage fort sympathique !
Mise à jour du code pour prise en compte du right-to-left.
Merci Grégory pour ce partage
j'avais bien remarqué le changement, juste grogné, et pas eu le temps de rien non plus
à force de bosser pour nos clients, on ne fait plus rien en recherche de dev, sauf la nuit ou les we :-)
Merci pour les conseils, les salutations de la Colombie