WordPress : Utilisation de filtres pour ajouter une classe à un conteneur de modèles

Publié par Jean-Michel le

Ok donc je ne suis pas très fort en php et java, j’apprends quand même. Maintenant, je travaille avec Genesis en utilisant epik si cela compte. N’ayant pas de chance mais essayant d’écrire un filtre pour ajouter une classe à une div spécifique sur un modèle dans functions.php

J’ai élargi mon site mais je ne veux pas que toute la section Blog (accueil du blog, catégories et article unique) soit aussi large afin que je puisse utiliser la programmation native et apprendre à écrire ce genre de choses.

en ce moment je contrôle la largeur via ma feuille de style

    .page-id-89 .site-inner .wrap {
    padding: 0 5% 0;
}

Comment puis-je écrire cela comme un filtre et l’accrocher au ‘.site-inner .wrap’ dans les sections mentionnées ci-dessus du site ?

donc, fondamentalement, la fonction recherche ‘.site-inner .wrap’ et ajoute une classe (disons .squeeze) avec mon rembourrage sur ces types de publication

J’apprécie toute aide pendant que j’apprends mon chemin à travers cela! Passe un bon weekend

Solution n°1 trouvée

Voici les guides utiles sur les crochets et les filtres dans Genesis Bro.

Genesis Visual Hook Guide

Genesis Visual Hook Guide

Changing and Adding Custom Classes in Genesis HTML 5

add_filter( 'genesis_attr_content-sidebar-wrap', 'custom_add_css_attr' );

function custom_add_css_attr( $attributes ) {
    if ( is_page_template( 'page_blog.php' ) ) {
        $attributes['class'] .= ' squeeze';
    }
   return $attributes;
}

Vous pouvez utiliser le .site-inner .wrap .content-sidebar-wrapau lieu de .site-inner .wrap. Je pense que .site-inner .wrapc’est déclaré en général, donc nous ne pouvons pas ajouter de classes sur la section spécifique.

J’espère que cela vous aidera.

Solution n°2 trouvée

Le travail est probablement déjà fait pour vous. Si votre thème appelle body_classcorrectement, votre élément body devrait déjà avoir des classes définies pour le modèle actuel. Par exemple, voici la classe body de la page d’accueil d’un site WordPress :

home page page-id-8 page-template

Sur la classe de corps d’un poste unique

single single-post postid-5418 single-format-standard

Si vous utilisez un modèle de page personnalisé, il y aura également une classe spécifique à ce modèle, généralement de la formemy-custom-template-php

Si toutes les pages que vous souhaitez élargir, ou à l’inverse celles que vous ne souhaitez pas élargir, ont une classe body particulière vous pouvez utiliser la classe dans votre sélecteur css. Par exemple, ce sélecteur ne s’appliquerait qu’à la page d’accueil :

.home .site-inner .wrap

Si vous ne pouvez pas distinguer les modèles que vous souhaitez élargir, vous pouvez filtrer la body_classfonction et utiliser des balises conditionnelles pour ajouter la classe souhaitée :

add_filter('body_class', function($classes) {
    if( is_home() ) {
        $classes[] = 'wide';
    }
    return $classes;
});

L’exemple ci-dessus ajoutera la classe wideà l’élément body sur la page d’accueil.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *