Je cherche le meilleur moyen d'injecter du CSS dans le CP Admin de WordPress.
Actuellement, j'utilise le hook d'action admin_head
et dans ce hook, j'utilise dirname( __FILE__ )
pour récupérer le répertoire des feuilles de style. Cependant, dirname()
récupère le chemin du serveur. Est-ce la méthode recommandée ou existe-t-il une sorte de fonction WordPress pour obtenir un chemin URI plutôt qu'un répertoire chemin?
public function admin_head()
{
// Let's include the Control Panel CSS
$url = dirname( __FILE__ ) . '/css/cpanel.css';
$ie = dirname( __FILE__ ) . '/css/cpanel-ie.css';
// Inject our cPanel styelsheet and add a conditionaly for Internet Explorer
// (fixes bugs on my home browser)
$head = <<<HEAD
<link rel="stylesheet" href="{$url}" type="text/css" media="screen" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="{$ie}" media="screen" />
<![endif]-->
HEAD;
echo $head;
foreach( self::$classes as $class => $obj )
{
if ( method_exists( $obj, 'admin_head' ) )
{
$obj->admin_head();
}
}
}
-Zack
Voir plugins_url()
. Il est parfait et conçu pour créer des liens vers des fichiers dans des dossiers de plug-ins.
PS aussi wp_enqueue_style()
pourrait avoir un sens dans le mélange.
Il existe un autre moyen d'ajouter des commentaires conditionnels à l'aide de l'API de WP:
wp_enqueue_style(
'my-ie-style',
get_template_directory_uri() . '/css/cpanel-ie.css'
);
global $wp_styles;
$wp_styles->add_data( 'my-ie-style', 'conditional', 'IE' );
`
Au départ, je ne pensais pas que c'était possible, mais j'ai ensuite fait quelques recherches et j'ai mis au point la solution suivante, qui fonctionne pour moi sur WordPress 3.1. La partie délicate consistait à récupérer les balises conditionnelles pour IE. Il y a un filtre pour ça!
<?php
/*
Plugin Name: My Plugin
*/
class My_Plugin {
function My_Plugin() {
add_action( 'wp_print_styles', array( &$this, 'css_public' ) );
add_filter( 'style_loader_tag', array( &$this, 'ie_conditional_comments' ), 10, 2 );
}
function css_public() {
wp_enqueue_style( 'my-plugin', plugins_url( '/my.css', __FILE__ ), array(), '1.0' );
wp_enqueue_style( 'my-plugin-ie', plugins_url( '/my-ie.css', __FILE__ ), array( 'my-plugin' ), '1.0' );
}
function ie_conditional_comments( $tag, $handle ) {
if ( 'my-plugin-ie' == $handle ) {
$tag = '<!--[if IE]>' . $tag . '<![endif]-->';
}
return $tag;
}
}
$my_plugin = new My_Plugin();
Meilleurs voeux, -Mike