web-dev-qa-db-fra.com

Comment cibler la nouvelle interface MP6 de WordPress 3.8 avec CSS?

Quand MP6 était un plugin dans WordPress 3.6+, il modifiait la classe body de l’administrateur et ajoutait une classe "admin-mp6" qui m’aide à styler mes plugin en conséquence.

Maintenant, avec le dernier Alpha de WordPress 3.8, le cours a été supprimé. Je sais depuis que c'est une version alpha la classe peut revenir mais je me demande s'il existe des "meilleures pratiques" officielles

7
Xaver

Andrew Nacin a publié une approche "officielle" de ce sujet ici

La variante CSS uniquement doit utiliser la classe branch-3-x pour cibler les versions avant 3.8 et les valeurs par défaut doivent être appliquées à toutes les versions à venir afin que vous n'ayez pas à vous en soucier. autre version:

.branch-3-6 .some-selector,
.branch-3-7 .some-selector {
     /* some rules go here for 3.6 and 3.7 */
}
.some-selector {
     /* 3.8+ rules go here */
}

En savoir plus sur ce sujet sur la page make.wordpress.org

2
Xaver

Bien que ce ne soit pas spécifique à MP6 (je ne suis pas son développement) et à son CSS, votre question a l'air de "comment vérifier que WP version est supérieure à un. Une fonctionnalité a été introduite dans? ".

Je voudrais donc simplement examiner le contenu de $wp_version global. Si c'est la fonctionnalité 3.8, alors tout ce qui existe avec la version appropriée l'a.

Également, en regardant rapidement les classes body dans admin, il y a la classe branch-3-7, qui permet de cibler branch-3-8 (mais ne peut pas être ciblé de manière conditionnelle, car rien> = 3.8, car ce n'est pas quelque chose que CSS fait).

4
Rarst

Je préfère également une variante uniquement CSS. Malheureusement, ce n'est pas tout à fait possible. Le chemin que je prends est un hybride de CSS et de PHP.

Premièrement, nous utilisons PHP pour détecter la version de WordPress installée et, éventuellement, si MP6 est installé ou non. Ceci est assez facile en utilisant la constante MP6 définie par le plugin et le $wp_version global comme suggéré par Rarst. Une fois que nous savons que nous vivons dans un monde MP6, nous ajoutons notre propre classe de corps. Je choisis d'utiliser le nom de classe "flaticons":

/**
 * Filter body classes to detect MP6 or WordPress 3.8 so we can substitute the correct styles.
 *
 * @param array $classes
 *
 * @global $wp_version
 *
 * @return array
 */
function flaticons_body_class( $classes ) {
    global $wp_version;

    if ( ( defined( 'MP6' ) && MP6 ) || version_compare( $wp_version, '3.8', '>=' ) ) {
        $classes[] = 'flaticons';
    }

    return $classes;
}

Maintenant, dans notre CSS où nous utilisions auparavant les sélecteurs .admin-mp6, .admin-color-mp6 ou .mp6, nous pouvons utiliser .flaticons à la place.

Cela fonctionnera à la fois avec MP6 sur des installations plus anciennes et avec WordPress 3.8+ une fois sorti. Pas optimal, mais une solution solide et pérenne.

3
EAMann