Contenu principal
add_editor_style()

WordPress 3.4 : réparer la régression de add_editor_style()

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 :

0102030405060708091011121314151617181920212223242526272829

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 :

123

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 !