web-dev-qa-db-fra.com

Est-il possible de modifier les attributs d'un style ou d'un script enregistré avant son déclenchement?

J'aimerais modifier les propriétés d'un style enregistré (ou d'un script - il en va de même) avant son chargement.

En ce moment, j'essaie de modifier un style enregistré juste avant qu'il ne soit mis en file d'attente. Je peux donc le diriger vers un autre fichier (par exemple, changer la propriété src, peut-être d'autres personnes). Vous recherchez des idées spécifiques sur le point de connexion et de modification de l'objet $wp_styles afin que la mise en file d'attente se déclenche normalement, mais avec les modifications que j'ai apportées aux propriétés du style enregistré.

Je crée un jeu de couleurs administrateur et je pense que ce serait génial si je pouvais réécrire/ajuster la mise en file d'attente existante, au lieu d'ajouter une demande supplémentaire à chaque page (par exemple, colors-fresh.css + ma feuille de style - je préférerais avoir une requête, pourquoi inclure la feuille de style originale uniquement pour redéfinir chaque style dans une autre) ...

Annuler l'enregistrement du style et enregistrer le mien? - Je devais alors désenregistrer les deux jeux de couleurs (classique/frais) lorsque je préfèrerais simplement accrocher et ajuster l'effet styles avant le déclenchement de la mise en file d'attente.

Je suis à peu près sûr que c'est possible, mais il me manque tout simplement le cerveau pour l'envelopper maintenant ... (trop longtemps depuis longtemps) ...

Toutes les suggestions sont les bienvenues ....;)

4
t31os

Modifier le chemin d'un style enregistré

Je voulais modifier le chemin d'accès à l'une des feuilles de style d'administration WordPress afin de pouvoir limiter les demandes et parce qu'il est peu logique d'inclure deux feuilles de style, lorsque celle que j'appelle redéfinit tous les styles dans la feuille de style mise en file d'attente par WordPress.

L'idée est fondamentalement de rediriger le style existant vers une autre feuille de style, deux crochets conviennent

  • style_loader_src
  • style_loader_tag.

Le premier fournit uniquement l'URL (ou le chemin) de la feuille de style et le descripteur (c'est le nom avec lequel le style est enregistré), le second fournit la chaîne HTML complète (et le descripteur) de la feuille de style à inclure.

J'ai décidé d'utiliser style_loader_src pour changer le chemin des couleurs de la feuille de style (src), car c'est tout ce dont j'avais besoin pour ajuster le chemin et connaître le handle actuel, ce qui convient parfaitement à mes besoins.

Exemple de filtre qui modifie le chemin d'accès à la feuille de style de couleurs.

Vérifie si le descripteur correspond à la feuille de style des couleurs et met à jour le chemin d'accès le cas échéant.

function switch_stylesheet_src( $src, $handle ) {
    if( 'colors' == $handle )
        $src = plugins_url( 'my-colors.css', __FILE__ );
    return $src;
}
add_filter( 'style_loader_src', 'switch_stylesheet_src', 10, 2 );

Le filtre ci-dessus prendra les couleurs de la feuille de style existante, par exemple.

<link rel='stylesheet' id='colors-css' href='http://example.com/wp-admin/css/colors-fresh.css?ver=20100610' type='text/css' media='all' />

Et le convertir en ..

<link rel='stylesheet' id='colors-css' href='http://example.com/wp-content/plugins/my-plugin/my-colors.css' type='text/css' media='all' />

Je trouve cette méthode préférable à la mise en file d'attente d'une feuille de style supplémentaire, c'est une demande de moins, et les remplacements CSS requis sont beaucoup moins nécessaires dans le style que vous utilisez, car vous détournez essentiellement cette demande pour charger votre propre feuille de style.

7
t31os

Vous pouvez utiliser le filtre wp_admin_css_uri dans la fonction du même nom qui renvoie l'URI des fichiers admin css. Par exemple.:

function custom_modify_styles( $_file, $file ) {
    if( 'style' == $file ) // $file = css filename without extension
        $_file = 'my/new/path/to/style.css';
    return $_file;
}
add_action( 'wp_admin_css_uri', 'custom_modify_styles', 10, 2 );
2
sorich87