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

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 :

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 !

Tags :    
Julio Potier (BoiteAWeb.fr)
21
juin
2012
@8:33

Ha content de voir que tu as réussi ça, balèse ! :)
Merci pour le partage 8)

#
Marian Denys
21
juin
2012
@8:53

Ah merci pour ce partage fort sympathique !

#
Greg
24
juin
2012
@14:52

Mise à jour du code pour prise en compte du right-to-left.

#
chamomor
25
juin
2012
@17:46

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 :-)

#
johanso
01
juil
2012
@16:39

Merci pour les conseils, les salutations de la Colombie

#

Salutations, étranger.

Envie d'un avatar?
Gravatar
Do not fill the next field
:D :lol: :) ;) :P 8) :roll: :( :cry: :oops: :? :| :o 8O :x :twisted: :evil: :mrgreen:

.
Afficher le panneau des Smilies:D   Afficher le panneau des balises html utilisables Balises
Vous pouvez utiliser ces balises:
<b></b> <i></i> <del></del> <a href=""></a> <abbr title=""></abbr> <cite></cite> <code></code> <pre lang="" line=""></pre>
Exemples pour "pre": lang="css", "html", "javascript", "jquery", "php", "sql"... (ou laisser vide)