.elementor-10 .elementor-element.elementor-element-48fb3cd9{--display:flex;--min-height:140px;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:space-between;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--overlay-opacity:1;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0%;--padding-bottom:0%;--padding-left:5%;--padding-right:5%;--z-index:95;}.elementor-10 .elementor-element.elementor-element-48fb3cd9:not(.elementor-motion-effects-element-type-background), .elementor-10 .elementor-element.elementor-element-48fb3cd9 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#FFFFFF;}.elementor-10 .elementor-element.elementor-element-48fb3cd9::before, .elementor-10 .elementor-element.elementor-element-48fb3cd9 > .elementor-background-video-container::before, .elementor-10 .elementor-element.elementor-element-48fb3cd9 > .e-con-inner > .elementor-background-video-container::before, .elementor-10 .elementor-element.elementor-element-48fb3cd9 > .elementor-background-slideshow::before, .elementor-10 .elementor-element.elementor-element-48fb3cd9 > .e-con-inner > .elementor-background-slideshow::before, .elementor-10 .elementor-element.elementor-element-48fb3cd9 > .elementor-motion-effects-container > .elementor-motion-effects-layer::before{--background-overlay:'';}.elementor-10 .elementor-element.elementor-element-733bbfa{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-10 .elementor-element.elementor-element-733bbfa.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-10 .elementor-element.elementor-element-d26bab3{text-align:start;}.elementor-10 .elementor-element.elementor-element-d26bab3 img{width:100%;height:80px;object-fit:contain;object-position:center center;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );color:var( --e-global-color-primary );}.elementor-10 .elementor-element.elementor-element-73a08d2.elementor-element{--align-self:center;--flex-grow:0;--flex-shrink:0;}.elementor-10 .elementor-element.elementor-element-73a08d2 .elementor-heading-title{font-family:"Oswald", Sans-serif;font-size:24px;font-weight:600;letter-spacing:1.2px;}.elementor-10 .elementor-element.elementor-element-ad0575f{--display:flex;}.elementor-widget-mega-menu > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title, .elementor-widget-mega-menu > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title > .e-n-menu-title-container, .elementor-widget-mega-menu > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title > .e-n-menu-title-container > span{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-mega-menu{--n-menu-divider-color:var( --e-global-color-text );}.elementor-10 .elementor-element.elementor-element-15f85de{--display:flex;}.elementor-10 .elementor-element.elementor-element-e65b573{--display:flex;}.elementor-10 .elementor-element.elementor-element-188e663{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:50px;--padding-bottom:50px;--padding-left:150px;--padding-right:150px;}.elementor-10 .elementor-element.elementor-element-188e663:not(.elementor-motion-effects-element-type-background), .elementor-10 .elementor-element.elementor-element-188e663 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-380a0e2 );}.elementor-10 .elementor-element.elementor-element-c55393e{--display:flex;}.elementor-10 .elementor-element.elementor-element-e69e51d{--display:flex;}.elementor-10 .elementor-element.elementor-element-3cd9dc8{--display:flex;}.elementor-10 .elementor-element.elementor-element-f7595e2{--display:flex;--padding-top:20px;--padding-bottom:20px;--padding-left:20px;--padding-right:20px;}.elementor-widget-icon-list .elementor-icon-list-item:not(:last-child):after{border-color:var( --e-global-color-text );}.elementor-widget-icon-list .elementor-icon-list-icon i{color:var( --e-global-color-primary );}.elementor-widget-icon-list .elementor-icon-list-icon svg{fill:var( --e-global-color-primary );}.elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text, .elementor-widget-icon-list .elementor-icon-list-item > a{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-icon-list .elementor-icon-list-text{color:var( --e-global-color-secondary );}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child){padding-block-end:calc(7px/2);}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:first-child){margin-block-start:calc(7px/2);}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-inline:calc(7px/2);}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-items.elementor-inline-items{margin-inline:calc(-7px/2);}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{inset-inline-end:calc(-7px/2);}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-icon i{transition:color 0.3s;}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-icon svg{transition:fill 0.3s;}.elementor-10 .elementor-element.elementor-element-d8812ef{--e-icon-list-icon-size:14px;--icon-vertical-offset:0px;}.elementor-10 .elementor-element.elementor-element-d8812ef .elementor-icon-list-text{transition:color 0.3s;}.elementor-10 .elementor-element.elementor-element-34f5c6b{--display:flex;}.elementor-10 .elementor-element.elementor-element-1170ea3{--n-menu-dropdown-content-max-width:fit-content;--n-menu-heading-justify-content:initial;--n-menu-title-flex-grow:initial;--n-menu-title-justify-content:initial;--n-menu-title-justify-content-mobile:initial;--n-menu-heading-wrap:wrap;--n-menu-heading-overflow-x:initial;--n-menu-title-distance-from-content:0px;width:var( --container-widget-width, 100% );max-width:100%;--container-widget-width:100%;--container-widget-flex-grow:0;--n-menu-open-animation-duration:500ms;--n-menu-toggle-icon-wrapper-animation-duration:500ms;--n-menu-title-space-between:0px;--n-menu-title-font-size:18px;--n-menu-title-transition:300ms;--n-menu-icon-size:16px;--n-menu-toggle-icon-size:20px;--n-menu-toggle-icon-hover-duration:500ms;--n-menu-toggle-icon-distance-from-dropdown:0px;}.elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title, .elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title > .e-n-menu-title-container, .elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title > .e-n-menu-title-container > span{font-family:"Sarabun", Sans-serif;font-weight:500;letter-spacing:1.4px;}.elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title:not( .e-current ):not( :hover ){border-style:solid;border-width:0px 0px 1px 0px;border-color:var( --e-global-color-380a0e2 );}.elementor-10 .elementor-element.elementor-element-1170ea3 {--n-menu-title-color-hover:var( --e-global-color-primary );--n-menu-title-color-active:var( --e-global-color-primary );}.elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title:hover:not( .e-current ){border-style:solid;border-width:0px 0px 1px 0px;border-color:var( --e-global-color-accent );}.elementor-10 .elementor-element.elementor-element-1170ea3 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title.e-current{border-style:solid;border-width:0px 0px 1px 0px;}.elementor-10 .elementor-element.elementor-element-4c2f1d0{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-10 .elementor-element.elementor-element-d3f0da0 > .elementor-widget-container{margin:0px 0px 0px 0px;}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__toggle .elementor-button{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__product-name a{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__product-price{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons .elementor-button{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons a.elementor-button--view-cart{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons a.elementor-button--checkout{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .woocommerce-mini-cart__empty-message{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-10 .elementor-element.elementor-element-a832598{width:var( --container-widget-width, 100% );max-width:100%;--container-widget-width:100%;--container-widget-flex-grow:0;z-index:20;--main-alignment:center;--divider-style:solid;--subtotal-divider-style:solid;--elementor-remove-from-cart-button:none;--remove-from-cart-button:block;--cart-border-style:none;--product-variations-color:var( --e-global-color-primary );--product-price-color:var( --e-global-color-primary );--divider-width:0px;--subtotal-divider-top-width:0px;--subtotal-divider-right-width:0px;--subtotal-divider-bottom-width:0px;--subtotal-divider-left-width:0px;--cart-footer-layout:1fr 1fr;--products-max-height-sidecart:calc(100vh - 240px);--products-max-height-minicart:calc(100vh - 385px);--checkout-button-text-color:var( --e-global-color-primary );--empty-message-color:var( --e-global-color-primary );}.elementor-10 .elementor-element.elementor-element-a832598 > .elementor-widget-container{padding:0px 0px 0px 0px;border-style:none;}.elementor-10 .elementor-element.elementor-element-a832598 .widget_shopping_cart_content{--subtotal-divider-left-width:0;--subtotal-divider-right-width:0;}.elementor-10 .elementor-element.elementor-element-a832598 .elementor-menu-cart__product-price .product-quantity{color:#02010100;}.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}@media(max-width:1024px){.elementor-10 .elementor-element.elementor-element-48fb3cd9{--padding-top:0%;--padding-bottom:0%;--padding-left:5%;--padding-right:5%;}.elementor-widget-heading .elementor-heading-title{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__toggle .elementor-button{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__product-name a{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__product-price{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons .elementor-button{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons a.elementor-button--view-cart{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons a.elementor-button--checkout{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .woocommerce-mini-cart__empty-message{letter-spacing:var( --e-global-typography-primary-letter-spacing );}}@media(min-width:768px){.elementor-10 .elementor-element.elementor-element-48fb3cd9{--width:100%;}.elementor-10 .elementor-element.elementor-element-733bbfa{--width:25%;}.elementor-10 .elementor-element.elementor-element-ad0575f{--content-width:100%;}.elementor-10 .elementor-element.elementor-element-188e663{--width:100%;}.elementor-10 .elementor-element.elementor-element-4c2f1d0{--width:15%;}}@media(max-width:767px){.elementor-10 .elementor-element.elementor-element-48fb3cd9{--min-height:50px;--justify-content:center;}.elementor-10 .elementor-element.elementor-element-733bbfa{--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--margin-top:5px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-10 .elementor-element.elementor-element-d26bab3 img{height:62px;}.elementor-widget-heading .elementor-heading-title{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-10 .elementor-element.elementor-element-ad0575f{--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-10 .elementor-element.elementor-element-4c2f1d0{--flex-direction:row-reverse;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap-reverse;--align-items:center;--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-10 .elementor-element.elementor-element-4c2f1d0.e-con{--order:-99999 /* order start hack */;}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__toggle .elementor-button{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__product-name a{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__product-price{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons .elementor-button{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons a.elementor-button--view-cart{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .elementor-menu-cart__footer-buttons a.elementor-button--checkout{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-widget-woocommerce-menu-cart .woocommerce-mini-cart__empty-message{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-10 .elementor-element.elementor-element-a832598{--container-widget-width:112px;--container-widget-flex-grow:0;width:var( --container-widget-width, 112px );max-width:112px;}}/* Start custom CSS for mega-menu, class: .elementor-element-1170ea3 */.e-n-menu-title{
    transition: 0.3s; !important
}
.e-n-menu-title:hover{
    transition: 0.3s; !important
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-d3f0da0 */Inviter des membres de l'équipe
sur wordpress j'ai the events calandar comment je personnalise la page events ?

08:50
Personnaliser la page Events avec The Events Calendar sur WordPress
Il y a plusieurs approches pour personnaliser la page des événements avec The Events Calendar. Voici les principales méthodes :

1. Via le Customizer WordPress
Va dans Apparence → Personnaliser. The Events Calendar ajoute souvent ses propres options dans le Customizer (couleurs, mise en page, etc.).

2. Via les réglages du plugin
Dans Événements → Réglages → Affichage, tu peux configurer le template par défaut (liste, mois, jour), le nombre d'événements par page, et l'activation/désactivation de certains éléments.

3. Surcharge des templates (méthode recommandée)
C'est la méthode la plus puissante. The Events Calendar utilise un système de templates surchargeables :

Copie les fichiers templates du plugin dans ton thème en respectant cette structure :

ton-theme/
└── tribe/
    └── events/
        ├── v2/
        │   ├── list.php           ← vue liste
        │   ├── month.php          ← vue mois
        │   ├── list/
        │   │   └── event.php      ← chaque événement dans la liste
        │   └── ...
Les fichiers originaux se trouvent dans wp-content/plugins/the-events-calendar/src/views/v2/. Tu copies ceux que tu veux modifier dans ton-theme/tribe/events/v2/ et tu les édites librement.

4. CSS personnalisé
Pour des changements visuels simples, tu peux ajouter du CSS via Apparence → Personnaliser → CSS additionnel, ou dans le style.css de ton thème. Les classes principales sont .tribe-events, .tribe-events-calendar, .tribe-events-list, etc.

5. Hooks et filtres (PHP)
Tu peux utiliser les hooks du plugin dans le functions.php de ton thème. Par exemple :

php
// Changer le nombre d'événements par page
add_filter('tribe_events_get_option', function($value, $optionName) {
    if ($optionName === 'postsPerPage') {
        return 12;
    }
    return $value;
}, 10, 2);

// Ajouter du contenu avant la liste d'événements
add_action('tribe_events_before_template', function() {
    echo '<div class="mon-header-custom">Nos événements</div>';
});
Tu veux personnaliser quoi exactement ? Je peux t'aider plus précisément selon ton besoin.

Q : Quel type de personnalisation cherches-tu ? (Sélectionnez toutes les réponses applicables)
R : [No preference]

08:56
OK, je vais te donner un tour complet alors ! Voici un guide qui couvre les 4 axes de personnalisation.

1. Design / Apparence
Pour modifier les couleurs, polices et le style général, ajoute du CSS personnalisé dans Apparence → Personnaliser → CSS additionnel :

css
/* Couleur de fond des événements */
.tribe-events .tribe-events-calendar-list__event {
  background: #f9f9f9;
  border-radius: 8px;
  padding: 20px;
  margin-bottom: 16px;
}

/* Titre des événements */
.tribe-events .tribe-events-calendar-list__event-title a {
  color: #333;
  font-family: 'Montserrat', sans-serif;
  font-size: 22px;
}

/* Bouton "Voir plus" */
.tribe-events .tribe-events-c-ical__link {
  background-color: #e63946;
  color: #fff;
  border-radius: 4px;
}

/* Date des événements */
.tribe-events .tribe-events-calendar-list__event-date-tag-daynum {
  color: #e63946;
  font-weight: 700;
}
```

## 2. Mise en page / Structure (Templates)

Crée la structure de dossiers dans ton thème enfant :
```
ton-theme-enfant/
└── tribe/
    └── events/
        └── v2/
            └── list/
                └── event.php
Par exemple, pour réorganiser la carte d'un événement dans la vue liste, copie le fichier original depuis wp-content/plugins/the-events-calendar/src/views/v2/list/event.php et modifie-le à ta guise.

3. Fonctionnalités (filtres, tri, recherche)
Dans functions.php de ton thème enfant :

php
// Ajouter une barre de recherche au-dessus des événements
add_action('tribe_events_before_template', function() {
    echo '<div class="events-search-bar">
        <form method="get" action="' . tribe_get_events_link() . '">
            <input type="text" name="tribe-bar-search" 
                   placeholder="Rechercher un événement..." 
                   value="' . esc_attr(get_query_var('tribe-bar-search')) . '">
            <button type="submit">Rechercher</button>
        </form>
    </div>';
});

// Trier les événements par titre (au lieu de date)
add_filter('tribe_events_views_v2_view_repository_args', function($args) {
    $args['orderby'] = 'title';
    $args['order'] = 'ASC';
    return $args;
});

// Filtrer par catégorie d'événement
add_filter('tribe_events_views_v2_view_repository_args', function($args) {
    if (isset($_GET['cat'])) {
        $args['event_category'] = sanitize_text_field($_GET['cat']);
    }
    return $args;
});
4. Contenu affiché (champs, infos)
php
// Ajouter un champ personnalisé après le contenu de chaque événement
add_action('tribe_events_single_event_after_the_content', function() {
    $tarif = get_post_meta(get_the_ID(), '_tarif_event', true);
    if ($tarif) {
        echo '<div class="event-tarif"><strong>Tarif :</strong> ' . esc_html($tarif) . ' €</div>';
    }
});

// Masquer la carte Google Maps sur les événements
add_filter('tribe_get_embedded_map', '__return_false');

// Masquer l'export iCal / Google Calendar
add_filter('tribe_events_ical_single_event_links', '__return_empty_string');

// Ajouter un bouton d'inscription personnalisé
add_action('tribe_events_single_event_after_the_meta', function() {
    $lien = get_post_meta(get_the_ID(), '_lien_inscription', true);
    if ($lien) {
        echo '<a href="' . esc_url($lien) . '" class="btn-inscription" target="_blank">
                S\'inscrire à cet événement
              </a>';
    }
});
Quelques conseils importants :

Fais toujours tes modifications dans un thème enfant, jamais directement dans le thème parent ni dans les fichiers du plugin, sinon tout sera écrasé à la prochaine mise à jour. Si tu utilises des champs personnalisés (comme _tarif_event), le plugin ACF (Advanced Custom Fields) est un excellent complément pour les gérer facilement depuis l'admin.

Tu veux que j'approfondisse un point en particulier, ou tu as un rendu précis en tête que tu voudrais obtenir ?

https://wp-plestan.logiciel-arteo.fr/events/ tu peu me faire cette page et me dire quoi faire pour que cela soit dans le theme et style du site en general

08:57
Je vais d'abord aller voir cette page pour comprendre le design et le style du site.


Fetched: Évènements Archive - Authentic Nice Gallery
Fetched: Évènements Archive - Authentic Nice Gallery
Bien, je vois la structure. Laisse-moi maintenant récupérer le style général du site (la page d'accueil) pour bien capter l'identité visuelle.


Fetched: Authentic Nice Gallery - Authentic Nice Gallery
Fetched: Authentic Nice Gallery - Authentic Nice Gallery
Laisse-moi aussi récupérer le CSS du site pour identifier les couleurs et polices exactes.


Web recherché
Web recherché
Parfait, j'ai bien analysé le site Authentic Nice Gallery. Voici ce que j'ai identifié et ce que tu dois faire.

Analyse du style du site
Le site a une identité visuelle très épurée et élégante, typique d'une galerie d'art :

Fond : blanc / très clair
Typographie : polices fines, serif ou sans-serif élégantes (probablement une combinaison type Cormorant / Montserrat ou similaire via Elementor)
Couleurs : palette sobre — noir, blanc, gris, avec peu d'accents colorés
Footer : fond sombre (noir/gris foncé) avec le logo SVG en clair
Mise en page : beaucoup d'espace blanc, images en avant, texte discret
La page Events actuelle utilise le template par défaut de The Events Calendar (vue liste V2) qui ne s'intègre pas bien visuellement au reste du site Elementor.

Ce que tu dois faire : CSS personnalisé
Ajoute ce code dans Apparence → Personnaliser → CSS additionnel (ou dans le panneau CSS global d'Elementor). Ce CSS va restyler la page Events pour qu'elle s'harmonise avec le reste du site :

CSS personnalisé - The Events Calendar pour Authentic Nice Gallery
Code 
Comment l'appliquer
Étape 1 — Vérifier les polices
Le site semble utiliser des polices élégantes de type serif pour les titres. Vérifie dans Elementor → Réglages du site → Typographie quelles polices sont utilisées. Si ce n'est pas "Cormorant Garamond" et "Montserrat", remplace les valeurs dans les variables CSS tout en haut du fichier (--ang-font-titre et --ang-font-body).

Si les polices ne sont pas déjà chargées par le thème, ajoute-les via Elementor → Réglages du site → Typographie ou avec ce snippet dans functions.php :

php
add_action('wp_enqueue_scripts', function() {
    wp_enqueue_style('google-fonts-ang', 
        'https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;600&family=Montserrat:wght@300;400;500&display=swap'
    );
});
Étape 2 — Coller le CSS
Va dans Apparence → Personnaliser → CSS additionnel et colle tout le CSS de l'artifact ci-dessus.

Étape 3 — Ajuster les couleurs si besoin
Les variables CSS en haut du fichier (--ang-noir, --ang-gris, etc.) sont faites pour correspondre au style sobre du site. Si tu as des couleurs d'accent spécifiques (que tu verrais dans Elementor → Réglages du site → Couleurs globales), modifie la variable --ang-accent.

Étape 4 — Optionnel : Masquer des éléments inutiles
Si tu veux masquer la barre de recherche ou le bouton "S'abonner au calendrier" pour épurer davantage la page :

css
/* Masquer la recherche */
.tribe-events .tribe-events-c-search { display: none; }

/* Masquer le bouton s'abonner */
.tribe-events .tribe-events-c-subscribe-dropdown { display: none; }
Ce CSS donne un rendu coins carrés, typographie élégante serif/sans-serif, palette noir-blanc-gris, beaucoup d'espace — exactement dans l'esprit du site Authentic Nice Gallery. Tu veux que j'ajuste quelque chose en particulier ?

ok pour l'encar de recherche actuellement la barre recherche sur fond gris pas ouf peut etre faire ressortir l'encart entier en laissant fond blanc pour la barre de recherche mais quelque chose de legé pour l'encart entier englobant les fleches le aujourd'hui et le A venir

09:02
Je vais te proposer un encart élégant et léger pour toute cette zone de navigation/recherche.

CSS personnalisé - The Events Calendar pour Authentic Nice Gallery
Code ∙ Version 2 
Voilà ce que ça donne concrètement :

L'encart entier (recherche + navigation "Aujourd'hui" / flèches / "À venir") est englobé dans un fond 
#f5f5f5 très léger avec une fine bordure gris clair — subtil, pas lourd
La barre de recherche reste sur fond blanc pour bien ressortir à l'intérieur
Une ligne séparatrice fine entre la zone recherche et la zone navigation (flèches, Aujourd'hui, À venir) pour structurer sans surcharger
Le bouton "Chercher" est noir avec un effet hover qui s'inverse élégamment
Tout reste dans l'esprit épuré du site. Si tu veux ajuster l'intensité du fond de l'encart (plus clair ou plus marqué), tu peux modifier la variable --ang-gris-clair en haut du fichier — par exemple 
#fafafa pour encore plus discret ou 
#efefef pour un peu plus visible.

en vue Mois l'event est en noir on ne voit plus le chiffre de la date donne moi juste la partie ou il faut agir

09:31
CSS personnalisé - The Events Calendar pour Authentic Nice Gallery
Code ∙ Version 3 
L'idée c'est que la pastille de l'événement (fond sombre) ne masque plus le chiffre du jour. Le numéro de date passe au-dessus avec un z-index, et on force sa couleur en noir avec un font-weight un peu plus marqué pour qu'il reste bien lisible.

Si le problème persiste, c'est peut-être que le bloc event recouvre entièrement la cellule du jour. Dans ce cas, dis-moi et je regarderai avec un sélecteur plus précis — ou si tu peux m'envoyer un screenshot ça m'aiderait à cibler exactement l'élément fautif.

ok pour la vue calandrier comment je fait pour que si on clic sur l'évènement cela me redirige vers la page de l'evenement

09:48
Par défaut, dans la vue mois de The Events Calendar, quand tu cliques sur un événement ça ouvre juste un tooltip (une info-bulle) au lieu de rediriger vers la page. Pour changer ce comportement, ajoute ce snippet dans le functions.php de ton thème enfant :

php
// Redirige le clic sur un événement en vue Mois vers la page de l'événement
add_action('wp_footer', function() {
    if (tribe_is_month()) : ?>
    <script>
    document.addEventListener('click', function(e) {
        var eventEl = e.target.closest('.tribe-events-calendar-month__calendar-event');
        if (eventEl) {
            var link = eventEl.querySelector('a');
            if (link && link.href) {
                window.location.href = link.href;
            }
        }
    });
    </script>
    <?php endif;
});
Si tribe_is_month() ne fonctionne pas bien (parfois avec les vues V2 en AJAX), utilise cette version plus universelle :

php
add_action('wp_footer', function() { ?>
<script>
document.addEventListener('click', function(e) {
    var eventEl = e.target.closest('.tribe-events-calendar-month__calendar-event');
    if (eventEl) {
        e.preventDefault();
        e.stopPropagation();
        var link = eventEl.querySelector('a[href]');
        if (link) {
            window.location.href = link.href;
        }
    }
}, true);
</script>
<?php });
Le true à la fin capture l'événement avant que le tooltip ne s'ouvre, et le stopPropagation empêche l'info-bulle de se déclencher.

En complément, tu peux aussi rendre le curseur plus explicite pour montrer que c'est cliquable en ajoutant ce CSS :

css
/* Curseur pointer sur les events en vue mois */
.tribe-events .tribe-events-calendar-month__calendar-event {
  cursor: pointer;
}
Tu veux que j'intègre ça directement dans l'artifact CSS ?

la tooltip n'est pas deactivé mais je parlais plus sur la vue liste on clic sur l'evznt et on est redirigé

09:56
Ah d'accord ! En vue liste, normalement le titre de l'événement est déjà un lien cliquable. Si ça ne marche pas chez toi, c'est probablement que la zone cliquable est trop petite (juste le texte du titre).

Pour rendre toute la carte de l'événement cliquable, ajoute ça dans functions.php :

php
add_action('wp_footer', function() { ?>
<script>
document.addEventListener('click', function(e) {
    var card = e.target.closest('.tribe-events-calendar-list__event');
    if (card && !e.target.closest('a')) {
        var link = card.querySelector('.tribe-events-calendar-list__event-title a');
        if (link) {
            window.location.href = link.href;
        }
    }
});
</script>
<?php });
Et le CSS pour accompagner :

css
/* Toute la carte événement est cliquable */
.tribe-events .tribe-events-calendar-list__event {
  cursor: pointer;
}
Comme ça, peu importe où tu cliques sur la carte (image, date, description, espace vide), ça redirige vers la page de l'événement. Le !e.target.closest('a') évite un double déclenchement si on clique directement sur le titre qui est déjà un lien.

comment je personnalise comme ici https://galeriedeza.com/event/exposition-serenite/ je ne me souvient plus de comment j'ai fait pour avoir en bas de page Détail lieu et la carte

10:01

Fetched: Exposition « Sérénité »
Fetched: Exposition « Sérénité »
OK je vois ! C'est en fait le template par défaut de la page single event de The Events Calendar. Les blocs "Détails", "Lieu" et la carte Google Map en bas de page, c'est du natif au plugin — tu n'as rien codé de spécial pour ça. Il faut juste que les bonnes options soient activées.

Voici ce qu'il faut vérifier sur le site Authentic Nice Gallery :

1. Renseigner un lieu (Venue) pour chaque événement
Quand tu crées ou édites un événement dans l'admin WordPress, il y a une section "Lieu" sous la description. Tu dois :

Remplir le nom du lieu (ex: "Authentic Nice Gallery")
Remplir l'adresse complète (rue, ville, code postal, pays)
Le téléphone et le site web si tu veux qu'ils apparaissent
C'est cette info qui génère automatiquement le bloc "Lieu" + le lien Google Map en bas de la page single event.

2. Activer la carte Google Maps
Va dans Événements → Réglages → Intégrations (ou Événements → Réglages → Général selon ta version). Tu dois :

Activer l'option "Afficher la carte Google Maps"
Renseigner une clé API Google Maps si ce n'est pas déjà fait
Pour obtenir une clé API Google Maps : va sur Google Cloud Console, active l'API "Maps JavaScript API" + "Maps Embed API", et copie la clé dans le champ prévu par The Events Calendar.

3. Vérifier que le template single n'est pas surchargé
Si tu avais créé un template Elementor pour la page single event qui remplace le template natif, les blocs Détails/Lieu/Carte ne s'afficheront pas. Vérifie dans Elementor → Templates → Theme Builder s'il existe un template "Single Event" personnalisé. Si c'est le cas, soit tu le supprimes pour retrouver le template natif du plugin, soit tu y ajoutes manuellement les widgets correspondants.

En résumé
Tu n'as rien à coder. C'est le comportement par défaut de The Events Calendar quand :

Le lieu est renseigné dans l'événement
La carte Google Maps est activée dans les réglages
Aucun template Elementor custom ne remplace la page single event
Vérifie ces 3 points sur le site Authentic Nice Gallery et les blocs "Détails", "Lieu" et la carte apparaîtront comme sur galeriedeza.com.

https://wp-plestan.logiciel-arteo.fr/event/1694/ pourtant je n'ai pas ces infos en bas

10:47

Fetched: Évènement Test - Authentic Nice Gallery
Fetched: Évènement Test - Authentic Nice Gallery
Je vois le problème. En comparant avec la page de galeriedeza.com, il manque effectivement les blocs "Détails", "Lieu" et la carte. Et je remarque aussi un souci : le code PHP du add_action('wp_footer'... s'affiche en clair dans le HTML de la page, ce qui veut dire qu'il y a probablement une erreur dans ton functions.php (une balise mal fermée).

Mais pour le problème principal, il y a deux choses à vérifier :

1. Le lieu n'est pas renseigné sur cet événement
En regardant la page, je vois bien "Arteo Software" et "50 route de Paris, ROANNE" dans la vue liste, mais sur la page single event aucun bloc Détails/Lieu n'apparaît. Va éditer cet événement dans l'admin (Événements → Tous les événements → Évènement Test) et vérifie la section "Lieu" en dessous de l'éditeur de contenu. Assure-toi que le nom, l'adresse, la ville et le pays sont bien remplis et sauvegardés.

2. Un template Elementor surcharge probablement la page
C'est très certainement la cause. Le rendu de ta page single event est très minimaliste (juste le titre, la date, l'image et le texte) — il manque tous les blocs meta natifs de The Events Calendar. Ça indique qu'un template Elementor pour les single events remplace le template par défaut du plugin.

Vérifie ici : Elementor → Templates → Theme Builder. Regarde s'il existe un template de type "Single" assigné aux événements (post type tribe_events). Si c'est le cas, tu as deux options :

Option A — Supprimer le template Elementor pour revenir au natif : Supprime ou désactive ce template Single Event dans le Theme Builder. Les blocs Détails, Lieu et Carte réapparaîtront automatiquement.

Option B — Garder le template Elementor et ajouter les blocs manuellement : Édite le template dans Elementor et ajoute les widgets suivants (fournis par The Events Calendar) :

Event Details (ou utilise un widget Shortcode avec [tribe_event_inline])
Event Venue
Event Map (Google Maps)
Si ces widgets n'existent pas dans Elementor, tu peux utiliser des widgets Shortcode avec :

[tribe_venue]
[tribe_address]
[tribe_get_map_link]
Ou un widget HTML avec ce code PHP (via un plugin comme "PHP Everywhere" ou "Shortcoder") :

php
<?php if (tribe_has_venue()) : ?>
<div class="event-details-custom">
    <div class="event-detail-block">
        <h3>Détails</h3>
        <p><strong>Début :</strong> <?php echo tribe_get_start_date(); ?></p>
        <p><strong>Fin :</strong> <?php echo tribe_get_end_date(); ?></p>
    </div>
    <div class="event-venue-block">
        <h3>Lieu</h3>
        <p><?php echo tribe_get_venue(); ?></p>
        <p><?php echo tribe_get_full_address(); ?></p>
        <p><?php echo tribe_get_map_link_html(); ?></p>
    </div>
    <div class="event-map-block">
        <?php echo tribe_get_embedded_map(); ?>
    </div>
</div>
<?php endif; ?>
3. Corrige le functions.php
Le fait que add_action('wp_footer'... s'affiche en texte brut sur la page veut dire qu'il y a une erreur de syntaxe dans ton functions.php. Vérifie qu'il n'y a pas une balise ?> de fermeture PHP en trop ou manquante quelque part avant ce bloc de code.

En résumé : commence par vérifier le Theme Builder d'Elementor — c'est quasi sûrement un template custom qui masque les blocs natifs. Ensuite vérifie que le lieu est bien rempli dans l'événement.

/* redirect to single event */
    add_action('wp_footer', function() {
        if (tribe_is_month()) : ?>
        <script>
        document.addEventListener('click', function(e) {
            var eventEl = e.target.closest('.tribe-events-calendar-month__calendar-event');
            if (eventEl) {
                var link = eventEl.querySelector('a');
                if (link && link.href) {
                    window.location.href = link.href;
                }
            }
        });
        </script>
        <?php endif;
    });
    add_action('wp_footer', function() { ?>
        <script>
            document.addEventListener('click', function(e) {
                var eventEl = e.target.closest('.tribe-events-calendar-month__calendar-event');
                if (eventEl) {
                    e.preventDefault();
                    e.stopPropagation();
                    var link = eventEl.querySelector('a[href]');
                    if (link) {
                        window.location.href = link.href;
                    }
                }
            }, true);
        </script>
    <?php });

    add_action('wp_footer', function() { ?>
        <script>
            document.addEventListener('click', function(e) {
                var card = e.target.closest('.tribe-events-calendar-list__event');

                if (card && !e.target.closest('a')) {
                    var link = card.querySelector('.tribe-events-calendar-list__event-title a');
                    if (link) {
                        window.location.href = link.href;
                    }
                }
            });
        </script>
    <?php });
<?php if (tribe_has_venue()) : ?>
<div class="event-details-custom">
    <div class="event-detail-block">
        <h3>Détails</h3>
        <p><strong>Début :</strong> <?php echo tribe_get_start_date(); ?></p>
        <p><strong>Fin :</strong> <?php echo tribe_get_end_date(); ?></p>
    </div>
    <div class="event-venue-block">
        <h3>Lieu</h3>
        <p><?php echo tribe_get_venue(); ?></p>
        <p><?php echo tribe_get_full_address(); ?></p>
        <p><?php echo tribe_get_map_link_html(); ?></p>
    </div>
    <div class="event-map-block">
        <?php echo tribe_get_embedded_map(); ?>
    </div>
</div>
<?php endif; ?>

Afficher plus
10:52
Ah voilà le problème ! Le bloc tribe_has_venue() est collé directement dans le functions.php en dehors de toute fonction ou hook. Ce code est du template PHP qui s'exécute hors contexte, ce qui casse tout.

Voici le code corrigé et nettoyé à mettre dans ton functions.php :

functions.php — Code Events Calendar corrigé
Code 
Ce qui a changé
Le problème : le bloc tribe_has_venue() était collé en vrac dans functions.php, pas dans un hook. Du coup WordPress l'exécutait au chargement du fichier, hors contexte d'un événement, et ça s'affichait en texte brut ou provoquait des erreurs.

La correction : ce bloc est maintenant encapsulé dans le hook tribe_events_single_event_after_the_content, ce qui fait qu'il s'exécute uniquement sur la page single event, au bon endroit (après le contenu de l'événement).

J'ai aussi supprimé le premier add_action en doublon pour la vue mois (tu avais deux versions, j'ai gardé la plus robuste avec stopPropagation).

Remplace tout le code que tu m'as montré par celui de l'artifact, et assure-toi bien que le lieu est renseigné dans l'événement test. Les blocs Détails, Lieu et Carte devraient apparaître.

https://wp-plestan.logiciel-arteo.fr/event/1694/ je n'ai toujours pas mes infos en bas

10:55

Fetched: Évènement Test - Authentic Nice Gallery
Fetched: Évènement Test - Authentic Nice Gallery
Je vois deux problèmes clairs :

1. Le functions.php n'est pas correctement mis à jour
Le add_action('wp_footer'... s'affiche toujours en texte brut en bas de la page. Ça signifie qu'il y a une erreur de syntaxe plus haut dans ton functions.php qui fait que PHP décroche et affiche le reste en texte brut.

Fais ceci pour diagnostiquer : ouvre ton functions.php dans l'éditeur et cherche une balise ?> de fermeture PHP en trop avant le code des events. Souvent c'est ça : une ?> qui ferme le PHP, et tout ce qui suit est interprété comme du HTML.

Montre-moi les dernières lignes de ton functions.php (les 20-30 dernières lignes, tout ce qui est après le dernier code qui fonctionne correctement) et je te dirai exactement où ça casse.

2. Le template single event est probablement surchargé
La page ne montre que : titre, date, image, texte, puis directement le footer. Il n'y a aucun des blocs natifs de The Events Calendar (ni la navigation « ← Tous les Évènements », ni les détails, ni le lieu). Ça confirme qu'un template custom remplace le template natif.

Vérifie ces 3 endroits :

A. Elementor Theme Builder : Va dans Elementor → Templates → Theme Builder et regarde s'il y a un template de type "Single" ou "Single Post" qui cible le post type tribe_events.

B. Template surchargé dans le thème : Regarde si ce fichier existe dans ton thème : wp-content/themes/ton-theme/tribe/events/single-event.php Si oui, c'est lui qui contrôle le rendu et il ne contient probablement pas les blocs détails/lieu/carte.

C. Quel thème utilises-tu ? Si c'est un thème comme Flavor, flavor / flavor-developer quelqu'un a probablement construit un template custom pour les events. Dis-moi le nom exact du thème et du thème enfant, je pourrai te guider plus précisément.

En attendant, pour tester rapidement si c'est bien un problème de template, essaie d'ajouter ce hook alternatif dans functions.php qui force l'injection via the_content au lieu du hook de TEC :

php
add_filter('the_content', function($content) {
    if ( is_singular('tribe_events') && tribe_has_venue() ) {
        $details = '<div class="event-details-custom">';
        $details .= '<div class="event-detail-block">';
        $details .= '<h3>Détails</h3>';
        $details .= '<p><strong>Début :</strong> ' . tribe_get_start_date() . '</p>';
        $details .= '<p><strong>Fin :</strong> ' . tribe_get_end_date() . '</p>';
        $details .= '</div>';
        $details .= '<div class="event-venue-block">';
        $details .= '<h3>Lieu</h3>';
        $details .= '<p>' . tribe_get_venue() . '</p>';
        $details .= '<p>' . tribe_get_full_address() . '</p>';
        $details .= '<p>' . tribe_get_map_link_html() . '</p>';
        $details .= '</div>';
        $details .= '<div class="event-map-block">';
        $details .= tribe_get_embedded_map();
        $details .= '</div>';
        $details .= '</div>';
        $content .= $details;
    }
    return $content;
});
Ce filtre s'accroche au contenu lui-même, donc même si un template Elementor custom affiche le contenu via un widget "Post Content", les blocs seront injectés à la fin. Mais il faut d'abord corriger l'erreur de syntaxe dans ton functions.php sinon rien ne fonctionnera. Envoie-moi la fin du fichier et on règle ça.

cela fonctionne avec ce hook alternatif

11:03
Parfait, ça confirme que le hook natif de The Events Calendar (tribe_events_single_event_after_the_content) est ignoré parce qu'un template custom (probablement Elementor) remplace le rendu de la page single event. Le filtre the_content passe parce qu'il s'injecte directement dans le contenu du post.

Du coup on garde cette approche. Mets à jour ton functions.php avec cette version propre et complète :

functions.php — Code Events Calendar (version corrigée finale)
Code ∙ Version 2 
Et voici le CSS à ajouter pour styliser ces blocs dans l'esprit du site :

CSS personnalisé - The Events Calendar pour Authentic Nice Gallery
Code ∙ Version 4 
Par rapport à la version précédente, j'ai ajouté les blocs Catégories, Organisateur (avec téléphone, email, site web), et le téléphone/site web du lieu — comme sur galeriedeza.com. Chaque bloc ne s'affiche que si l'info est renseignée dans l'événement, donc pas de zone vide.

Pense bien à remplir les champs Lieu et Organisateur quand tu crées un événement dans l'admin pour que tout s'affiche.

pour la page evenement ok que me conseille tu pour une page d'actualité

11:06
Bonne question ! Pour une galerie d'art comme Authentic Nice Gallery, la page Actualités doit rester dans le même esprit épuré. Avant de te conseiller, j'ai besoin de comprendre comment c'est fait actuellement.


Fetched: Actualités - Authentic Nice Gallery
Fetched: Actualités - Authentic Nice Gallery
OK, la page Actualités est très vide pour l'instant — juste une image cliquable, pas de titre, pas de date, pas d'extrait. C'est probablement une page Elementor avec un widget image posé manuellement, ou alors une page d'archive avec un seul article publié.

Pour une galerie d'art, voici ce que je te conseille :

Deux approches possibles
L'approche dépend de comment tu veux gérer le contenu au quotidien.

Approche 1 — Les articles WordPress (posts) : tu crées des articles classiques dans la catégorie "Actualités" et tu affiches une archive filtrée. C'est la méthode la plus simple et la plus maintenable, chaque actualité est un article avec image mise en avant, date, extrait.

Approche 2 — Page Elementor construite à la main : tu construis la page avec des widgets Elementor (Posts, Loop Grid...). Plus de contrôle visuel mais plus de travail pour chaque mise à jour.

Je te recommande l'approche 1 combinée avec du CSS custom pour que le rendu soit cohérent avec le site. C'est ce que fait galeriedeza.com d'ailleurs.

Concrètement, voici la marche à suivre :

Étape 1 — Créer la structure
Dans Réglages → Lecture, vérifie que la page "Actualités" est bien définie comme page des articles, OU crée une page Elementor "Actualités" avec le widget Posts ou Archive Posts filtré sur la catégorie "Actualités".

La méthode la plus propre : crée une catégorie "Actualités" (Articles → Catégories), attribue-la à tes articles, puis dans Elementor utilise le widget Posts avec un filtre sur cette catégorie.

Étape 2 — Template Elementor recommandé
Dans Elementor, édite la page Actualités et construis-la comme ça :

Un titre en haut : "Actualités" (widget Heading, même style que les autres pages)
Un widget Posts (ou Loop Grid si tu as Elementor Pro) configuré avec :
Colonnes : 2 ou 3
Image mise en avant : activée, ratio carré ou 4:3
Titre : activé
Date : activée
Extrait : activé (limité à 20-30 mots)
Lien "Lire la suite" : activé
Pagination : activée
Étape 3 — CSS pour harmoniser
CSS personnalisé — Page Actualités Authentic Nice Gallery
Code 
Étape 4 — Ajouter la classe CSS à la page
Pour que le CSS s'applique uniquement à cette page, dans Elementor quand tu édites la page Actualités : clique sur la roue dentée en bas à gauche (réglages de la page) → onglet Avancé → dans le champ CSS Classes, ajoute page-actualites.

Résumé de la structure visuelle
Le rendu sera celui-ci : des cartes en grille (2 ou 3 colonnes), chacune avec une grande image en haut, puis en dessous la date en petites capitales grises, le titre en serif élégant, un court extrait, et un lien "Lire la suite" discret souligné. Au survol, la carte se soulève légèrement et l'image fait un léger zoom. Tout dans la palette noir/blanc/gris du site.

Tu veux que je t'aide aussi sur le template de la page single article (quand on clique sur une actualité) ?

ma page editeur elementor ne s'affiche pas 

__editor.min.js?ver=4.0.0:2__ Uncaught TypeError: Cannot convert undefined or null to object     at Object.entries (<anonymous>)     at loopBuilderModule.createDocumentSaveHandles (__editor.min.js?ver=4.0.0:2:67187__)     at loopBuilderModule.onElementorFrontendInit (__editor.min.js?ver=4.0.0:2:66560__)     at p (__load-scripts.php?c=0…&ver=6.9.4:135:3644__)     at f (__load-scripts.php?c=0…&ver=6.9.4:135:3497__)     at a (__load-scripts.php?c=0…s&ver=6.9.4:135:692__)     at e.trigger (__load-scripts.php?c=0…&ver=6.9.4:135:3380__)     at Editor.initFrontend (__editor.min.js?ver=4.0.0:2:1256074__)     at Editor.onPreviewLoaded (__editor.min.js?ver=4.0.0:2:1268350__)     at __editor.min.js?ver=4.0.0:2:1304939__
createDocumentSaveHandles@__editor.min.js?ver=4.0.0:2__onElementorFrontendInit@__editor.min.js?ver=4.0.0:2__p@__load-scripts.php?c=0…hooks&ver=6.9.4:135__f@__load-scripts.php?c=0…hooks&ver=6.9.4:135__a@__load-scripts.php?c=0…hooks&ver=6.9.4:135__e.trigger@__load-scripts.php?c=0…hooks&ver=6.9.4:135__initFrontend@__editor.min.js?ver=4.0.0:2__onPreviewLoaded@__editor.min.js?ver=4.0.0:2__(anonymous)@__editor.min.js?ver=4.0.0:2__onPreviewLoaded@__editor.min.js?ver=4.0.0:2__dispatch@__load-scripts.php?c=0…p-hooks&ver=6.9.4:2__v.handle@__load-scripts.php?c=0…p-hooks&ver=6.9.4:2__

Afficher plus
11:19
C'est un bug connu d'Elementor 4.0 avec le Loop Builder. L'erreur vient de loopBuilderModule.createDocumentSaveHandles qui essaie de lire un objet qui n'existe pas.

Voici les solutions par ordre de priorité :

Solution 1 — Mettre à jour Elementor
Ce bug a été corrigé dans les versions ultérieures. Vérifie dans Extensions → Extensions installées si une mise à jour d'Elementor est disponible. Si tu es en 4.0.0, passe à la dernière version.

Solution 2 — Vider tous les caches
Parfois c'est juste un conflit de cache après la mise à jour :

Va dans Elementor → Outils → Regénérer les CSS
Puis Elementor → Outils → Regénérer les fichiers
Vide le cache de ton plugin de cache (si tu en as un : WP Rocket, LiteSpeed, W3 Total Cache...)
Vide le cache de ton navigateur (Ctrl+Shift+Suppr)
Réessaie d'ouvrir l'éditeur
Solution 3 — Désactiver le Loop Builder temporairement
Si la mise à jour n'est pas possible, tu peux désactiver cette fonctionnalité pour débloquer l'éditeur. Va dans Elementor → Réglages → Fonctionnalités (ou Experiments) et désactive "Loop Builder" ou "Loop Grid". Sauvegarde et réessaie l'éditeur.

Solution 4 — Conflit de plugin
Si ça persiste, c'est peut-être un conflit avec un autre plugin. Teste en désactivant temporairement les plugins un par un (en commençant par les plugins de cache et d'optimisation), en gardant seulement Elementor actif.

Commence par la solution 2 (regénérer les CSS/fichiers), c'est souvent ça qui résout le problème. Si ça ne marche pas, dis-moi ta version exacte d'Elementor et d'Elementor Pro, je te guiderai plus précisément.

c'est ok pour ca maintenant je viens d'integrer woocommerce https://wp-plestan.logiciel-arteo.fr/ comment je peu adapter cela a ce qui est deja en place au niveau des oeuvres (liste) et oeuvre page unique

13:39
Laisse-moi d'abord regarder les pages actuelles des oeuvres et la boutique WooCommerce pour comprendre ce qui est en place.


Web recherché
Web recherché
OK, j'ai une bonne vision de la situation. Bonne nouvelle : tu as déjà bien travaillé ! Les oeuvres sont déjà des produits WooCommerce (les URLs sont en /produit/...), et la page single produit est déjà construite avec un template Elementor custom très propre (image à gauche, détails à droite, produits similaires en bas). La page liste /oeuvres/ affiche déjà les produits en grille.

Le gros du travail est donc du CSS pour harmoniser le rendu WooCommerce par défaut avec le style du site. Voici un fichier complet :

CSS personnalisé — WooCommerce Authentic Nice Gallery
Code 
Ce que fait ce CSS
Page liste des oeuvres : les produits s'affichent en grille 3 colonnes, avec des cartes épurées (bordure fine, fond blanc, hover avec ombre subtile et léger zoom sur l'image). Le bouton "Ajouter au panier" est masqué dans la liste — pour une galerie d'art, on préfère que le visiteur clique sur l'oeuvre pour voir la fiche détaillée. Si tu veux le réafficher, supprime simplement le bloc qui le cache.

Page fiche produit : les titres sont en serif élégant, le prix est discret mais lisible, les onglets ont un style minimaliste avec juste un trait sous l'onglet actif, le bouton d'achat est noir avec effet hover inversé. Les produits similaires en bas gardent le même style.

Panier et checkout : les tableaux et boutons suivent la même charte graphique.

Quelques recommandations en plus
Les images sont actuellement en 150x150 (vignettes) sur la page liste — c'est très petit. Dans WooCommerce → Réglages → Produits → Affichage, augmente la taille des images du catalogue à au moins 600x600 px, puis va dans Apparence → Personnaliser → WooCommerce → Images produit et mets les dimensions du catalogue à 600x600. Ensuite regénère les miniatures avec le plugin Regenerate Thumbnails.

Le prix : sur la page "Bookseller" le prix n'apparaît pas dans la liste mais apparaît sur les produits similaires (6900€, 25000€, 12000€). Si certaines oeuvres n'ont pas de prix à afficher publiquement, tu peux laisser le champ prix vide et garder juste le bouton "Demande d'informations" comme tu l'as déjà fait.

La page /oeuvres/ : si c'est une page Elementor (pas la page shop native de WooCommerce), certains de ces styles ne s'appliqueront pas directement. Dans ce cas, le CSS ciblera la page shop WooCommerce. Dis-moi si /oeuvres/ est une page Elementor custom ou la page boutique WooCommerce et j'adapterai.

https://wp-plestan.logiciel-arteo.fr/produit/bookseller/ et pour la page produit unique

13:57
Je l'ai déjà récupérée tout à l'heure. La page est construite avec un template Elementor custom et elle est déjà bien structurée : image à gauche, bloc "À propos de l'oeuvre" à droite avec les attributs (Artiste, Titre, Année, Natures, Types, Dimensions, Signature, Certificat, État), un bouton "Demande d'informations", et les produits similaires en bas.

Le CSS WooCommerce que je t'ai donné dans l'artifact précédent couvre déjà la page single produit (section "PAGE SINGLE OEUVRE"), mais vu que c'est un template Elementor custom, il faut plutôt cibler les classes Elementor. Voici le CSS spécifique à ajouter :

CSS — Page produit unique (template Elementor)
Code 
Ce que ça change concrètement
Bloc "À propos de l'oeuvre" : les labels (Artiste, Titre, Année...) deviennent de petites étiquettes grises en majuscules avec espacement, les valeurs sont en noir — ça crée une hiérarchie visuelle claire et élégante. Chaque attribut est séparé par une ligne fine gris clair.

Produits similaires : les cartes passent au même style que la liste des oeuvres (bordure fine, hover avec ombre, zoom léger sur l'image, bouton "Ajouter au panier" masqué).

Bouton "Demande d'informations" : noir, lettres majuscules espacées, avec un effet hover qui inverse les couleurs. Cohérent avec les boutons du reste du site.

Un point important
Les sélecteurs CSS que j'utilise ciblent les classes Elementor génériques (.elementor-icon-list-text, .elementor-widget-button, etc.). Si ton template utilise des classes ou IDs spécifiques que tu as définis, certains styles pourraient ne pas s'appliquer. Si tu remarques que certains éléments ne prennent pas le style, fais un clic droit → Inspecter sur l'élément en question et envoie-moi la classe CSS, je t'ajusterai le sélecteur.

Tu veux qu'on s'attaque à autre chose sur le site ?

ok l'ajout au panier ne fonctionne pas

14:15
C'est normal — en regardant la page produit "Bookseller", je vois qu'il n'y a pas de bouton "Ajouter au panier" WooCommerce natif. Le seul bouton est "Demande d'informations" qui redirige vers la page contact. C'est parce que le template Elementor custom a remplacé tout le formulaire d'achat WooCommerce.

Quelques questions pour t'aider à résoudre ça :

[User dismissed — do not proceed, wait for next instruction]

14:16
OK, dis-moi quand tu veux qu'on reprenne ce point ou si tu as autre chose à traiter !

https://wp-plestan.logiciel-arteo.fr/produit/sans-titre-1959/ l'ajout au panier ne fonctionne pas

14:16

Fetched: Sans titre 1959 - Authentic Nice Gallery
Fetched: Sans titre 1959 - Authentic Nice Gallery
OK je vois. Le bouton "Ajouter au panier" existe bien, et l'URL est ?add-to-cart=1622 ce qui est le format standard WooCommerce. L'icône panier apparaît aussi dans le menu (0,00 € - 0 Panier).

Le problème vient probablement d'une de ces causes :

1. Vérifier que WooCommerce est bien configuré
Va dans WooCommerce → Réglages → Produits et vérifie que :

La page Boutique est bien assignée
La page Panier est bien assignée
La page Commande (checkout) est bien assignée
La page Mon compte est bien assignée
Ces pages doivent exister et contenir les shortcodes WooCommerce appropriés. Si elles n'existent pas, va dans WooCommerce → Outils → Créer les pages par défaut (ou WooCommerce → État du système → Outils).

2. Vérifier la page Panier
Va dans Pages dans l'admin et vérifie que la page "Panier" existe et contient le shortcode [woocommerce_cart] ou le bloc WooCommerce "Panier". Si tu l'as construite avec Elementor, il faut qu'elle contienne le widget WooCommerce Cart ou le shortcode dans un widget texte.

3. Le bouton est un simple lien (pas AJAX)
Le bouton actuel est un lien standard <a href="...?add-to-cart=1622">. Quand tu cliques dessus, que se passe-t-il exactement ?

Q : Quand tu cliques sur 'Ajouter au panier', que se passe-t-il ?
R : Le panier s'incrémente pas (reste à 0€)

14:55
OK, le lien est bien cliqué, la page recharge, mais le produit n'est pas ajouté au panier. C'est souvent un problème de cache ou de configuration produit. Vérifie ces points dans l'ordre :

1. Le produit est-il "achetable" ?
Va dans Produits → Sans titre 1959 → Éditer et vérifie :

L'onglet Données produit est bien sur "Produit simple" (pas "Produit externe" ni "Groupé")
Le prix est bien renseigné dans l'onglet Général (champ "Prix régulier") — le fait qu'il apparaisse dans la liste des attributs ne veut pas dire qu'il est dans le bon champ WooCommerce
Le statut du stock : dans l'onglet Inventaire, vérifie que "État du stock" est sur "En stock"
Le produit est bien Publié (pas en brouillon)
C'est très probablement le prix qui manque dans le champ WooCommerce natif. Tu as peut-être mis le prix uniquement dans un champ personnalisé / attribut (vu qu'il apparaît dans ta liste "À propos de l'oeuvre") mais pas dans le vrai champ "Prix" de WooCommerce. Sans prix dans ce champ, WooCommerce refuse l'ajout au panier silencieusement.

2. Plugin de cache
Si tu as un plugin de cache (LiteSpeed, WP Rocket, W3 Total Cache...), il faut exclure les pages WooCommerce du cache :

Page Panier
Page Commande
Page Mon compte
La plupart des plugins de cache ont une option "Exclure les pages WooCommerce" automatique. Vérifie dans les réglages du plugin. En attendant, vide le cache complètement pour tester.

3. Test rapide
Pour vérifier si c'est un problème de produit ou de WooCommerce, essaie directement cette URL dans ton navigateur :

https://wp-plestan.logiciel-arteo.fr/?add-to-cart=1622
Puis va sur la page panier. Si le produit y est, c'est un problème de redirection/cache sur la page produit. Si le panier est toujours vide, c'est un problème de configuration du produit.

4. Vérifier les logs
Va dans WooCommerce → État du système et regarde s'il y a des erreurs listées. Regarde aussi l'onglet Journal (logs) pour voir si WooCommerce signale un problème.

Commence par vérifier le champ prix WooCommerce natif — c'est la cause la plus fréquente de ce problème. Dis-moi ce que tu trouves.


fatal-errors-2026-03-31.log
30 lignes

log

15:16
Les logs montrent deux problèmes distincts, mais aucun n'est lié directement au panier WooCommerce :

Problème 1 — Elementor Cloud Library (403 Forbidden)
C'est le gros du log. Le module Cloud Library d'Elementor essaie de contacter les serveurs d'Elementor et reçoit une erreur 403. C'est agaçant (ça spamme les logs) mais ça n'empêche pas le panier de fonctionner. Pour le régler :

Va dans Elementor → Réglages → Fonctionnalités et désactive "Cloud Library" si l'option existe
Sinon, c'est un problème côté hébergeur (le pare-feu/WAF bloque les requêtes sortantes vers Elementor). Contacte ton hébergeur pour whitelister les domaines Elementor, ou ignore ces erreurs pour l'instant
Problème 2 — Conflit Yoast SEO / WooCommerce
Cette ligne est intéressante :

Declaration of Yoast\WP\SEO\Task_List\Application\Tasks\Complete_FTC::get_call_to_action() must be compatible with Task_Interface::get_call_to_action()

C'est un conflit de compatibilité entre Yoast SEO et WooCommerce. Les versions ne sont pas compatibles entre elles. Ça peut potentiellement casser des fonctionnalités WooCommerce.

Pour régler ça : mets à jour Yoast SEO et WooCommerce à leurs dernières versions. Si les deux sont déjà à jour, désactive Yoast temporairement et teste l'ajout au panier. Si ça fonctionne sans Yoast, c'est le coupable.

Pour le panier qui ne fonctionne pas
Ces logs ne montrent pas d'erreur WooCommerce spécifique au panier. Le problème vient probablement d'ailleurs. Fais ce test dans cet ordre :

1. Ouvre un onglet navigation privée et va sur https://wp-plestan.logiciel-arteo.fr/?add-to-cart=1622 — puis vérifie si le panier contient quelque chose

2. Si toujours vide, va dans l'admin : WooCommerce → État du système et dis-moi si tu vois des erreurs ou avertissements en rouge, notamment au niveau des pages (Boutique, Panier, Commande) — est-ce qu'elles sont bien assignées ?

3. Désactive Yoast SEO temporairement et reteste l'ajout au panier

Le conflit Yoast/WooCommerce est le suspect principal pour ton problème de panier.


` ### WordPress Environment ### WordPress address (URL): https://wp-plestan.logiciel-arteo.fr Site address (URL): https://wp-plestan.logiciel-arteo.fr WC Version: 10.6.1 Legacy REST API Package Version: L’extension Legacy REST API n’est pas installée sur ce site. Action Scheduler Version: ✔ 3.9.3 L

pasted

15:21
J'ai trouvé le coupable. Regarde tes plugins actifs :

YITH WooCommerce Catalog Mode : par YITH – 2.53.0

Ce plugin désactive volontairement l'ajout au panier. C'est exactement sa fonction : transformer WooCommerce en catalogue (consultation uniquement, sans achat). Il bloque silencieusement le panier, c'est pour ça que le bouton a l'air de fonctionner mais que rien ne s'ajoute.

Solution
Va dans Extensions → Extensions installées et désactive "YITH WooCommerce Catalog Mode".

Ensuite teste à nouveau l'ajout au panier sur la page "Sans titre 1959" — ça devrait fonctionner immédiatement.

Si tu veux garder ce plugin actif pour certains produits (par exemple les oeuvres sans prix, en mode "Demande d'informations" uniquement) mais autoriser l'achat sur d'autres, tu peux le configurer dans YITH → Catalog Mode pour qu'il s'applique seulement à certaines catégories ou certains produits au lieu de tout le site. Mais le plus simple pour tester est de le désactiver d'abord et de vérifier que le panier fonctionne.

https://wp-plestan.logiciel-arteo.fr/mon-compte/ peu tu me faire le css de cette page j'ai mis le widget Mon compte de elementor ce sera un css que je mettrais directement dans le widget

16:06

Fetched: Mon compte - Authentic Nice Gallery
Fetched: Mon compte - Authentic Nice Gallery
Voici le CSS à coller directement dans le widget Elementor (onglet Avancé → CSS personnalisé). Avec Elementor Pro, le sélecteur .elementor-10 .elementor-element.elementor-element-d3f0da0 cible automatiquement le widget :

CSS widget Mon Compte — Elementor (Avancé > CSS personnalisé)
Code 
Comment l'appliquer
Dans Elementor, édite la page "Mon compte", clique sur le widget Mon Compte, puis va dans l'onglet Avancé → CSS personnalisé et colle tout le code de l'artifact.

Le rendu donne une page de connexion/inscription en deux colonnes séparées par un trait vertical fin, avec les mêmes codes typographiques que le reste du site : titres en Cormorant Garamond, corps en Montserrat, boutons noirs qui s'inversent au hover, champs de saisie épurés avec bordure fine. Le CSS couvre aussi le dashboard après connexion (navigation latérale avec indicateur actif, tableaux de commandes, adresses).

le meme sans font family et avec !important partout

16:14
CSS widget Mon Compte — sans font-family, avec !important
Code ∙ Version 2 
Voilà, toutes les font-family retirées et !important ajouté partout. Comme ça les polices hériteront de celles définies dans Elementor au niveau global, et les styles passeront au-dessus de tout le reste.

les bouton ou le backround et quasi noir devrait avoir le text en blanc

16:16
CSS widget Mon Compte — Elementor (Avancé > CSS personnalisé)
Code ∙ Version 3 
J'ai ajouté background-color en plus de background (certains thèmes utilisent l'un ou l'autre), et aussi les états :active et :visited pour que le texte reste blanc dans tous les cas. C'est probablement Elementor ou le thème Hello qui écrasait la couleur du texte sur les boutons. Ça devrait être bon maintenant.

https://wp-plestan.logiciel-arteo.fr/panier/ le css de cette page maintenant

16:21

Fetched: Panier - Authentic Nice Gallery
Fetched: Panier - Authentic Nice Gallery
La page utilise le bloc WooCommerce Cart (pas un widget Elementor). C'est le même principe — tu mets ce CSS dans le widget Elementor qui contient le bloc panier, ou dans Apparence → Personnaliser → CSS additionnel. Dis-moi si c'est un widget Elementor ou une page avec bloc Gutenberg, je mets le bon préfixe. En attendant voici la version avec .elementor-10 .elementor-element.elementor-element-d3f0da0 pour widget Elementor :

CSS widget Panier — Elementor (Avancé > CSS personnalisé)
Code 
Le CSS couvre les deux cas : le bloc Gutenberg WooCommerce Cart (classes wc-block-*) et le shortcode classique (classes shop_table, cart_totals), comme ça peu importe comment la page est construite, ça s'appliquera. Le style est le même que les autres pages : boutons noirs texte blanc, coins carrés, typographie sobre, hover inversé, tableau épuré.

Note : le lien "Retour à la boutique" pointe actuellement vers /boutique/ — si tu veux qu'il redirige vers /oeuvres/ à la place, ajoute ça dans functions.php :

php
add_filter('woocommerce_return_to_shop_redirect', function() {
    return home_url('/oeuvres/');
});
1774967026271_image.png
certains element n'ont pas la bonne couleur notament ce qui est bleu

16:24
Je vois, les boutons "Mise à jour le panier", "Mettre à jour", "Modifier l'adresse" et le lien bleu prennent la couleur par défaut de WooCommerce/thème. Il faut cibler ces éléments spécifiquement. Ajoute ça à la fin du CSS du widget :

CSS widget Panier — Elementor (Avancé > CSS personnalisé)
Code ∙ Version 2 
Ça cible tous les éléments bleus que je vois sur ton screenshot : le lien "Modifier l'adresse", le bouton "Mise à jour le panier" (maintenant en style outline noir), le bouton "Mettre à jour" de l'expédition, et le bouton "APPLIQUER LE CODE PROMO". Plus un reset global de tous les liens dans le widget pour qu'aucun ne soit bleu.

passer à la commande texte en blanc quand pas hover

16:26
CSS widget Panier — Elementor (Avancé > CSS personnalisé)
Code ∙ Version 3 
J'ai ajouté les états :visited, :active et les variantes avec a pour forcer le blanc sur le texte dans tous les cas. C'est le reset global des liens (.elementor-10 .elementor-element.elementor-element-d3f0da0 a { color: #1a1a1a }) qu'on a ajouté juste avant qui écrasait la couleur blanche du bouton. Ça devrait être bon maintenant.

https://wp-plestan.logiciel-arteo.fr/commander/ cette page maintenant widget "validation de la commande"

16:28

Fetched: Panier - Authentic Nice Gallery
Fetched: Panier - Authentic Nice Gallery
La page redirige vers le panier car il est vide, mais pas de souci — je connais la structure du bloc checkout WooCommerce. Voici le CSS pour le widget "Validation de la commande" :

CSS widget Validation de la commande — Elementor
Code 
Même approche que les autres pages : sans font-family, avec !important partout, boutons noirs texte blanc avec hover inversé, champs épurés, coins carrés. Le CSS couvre à la fois le bloc Gutenberg checkout (wc-block-*) et le shortcode classique pour être compatible dans tous les cas.

1774967433906_image.png
meme constat que pour le panier des chose sont en bleu

16:30
CSS widget Validation de la commande — Elementor
Code ∙ Version 2 
Ça couvre le lien "Mot de passe perdu", le "Cliquer pour saisir un code promo", le bouton "Appliquer", le bouton "Connexion", le lien "politique de confidentialité" et la notice d'info. Plus de bleu.

Par contre je note aussi que tu as le message "aucun moyen de paiement disponible" — il faut que tu configures au moins une passerelle de paiement. Va dans WooCommerce → Réglages → Paiements et active au minimum le virement bancaire ou paiement à la livraison pour tester, ou installe Stripe / PayPal pour la production.

le bouton connexion aussi <button class="woocommerce-button button woocommerce-form-login__submit e-woocommerce-form-login-submit" name="login" type="submit" value="Connexion">Connexion</button> si ca peu t'aider vu que tu ne vois pas la page

16:33
CSS widget Validation de la commande — Elementor
Code ∙ Version 3 
J'ai ajouté les classes exactes .woocommerce-form-login__submit et .e-woocommerce-form-login-submit avec les états :visited et :active pour forcer le texte blanc dans tous les cas. Ça devrait passer maintenant.

1774967779677_image.png
le champs Pays/région * est foireux tu peu y faire quelque chose ?

16:36
Le select du pays est géré par WooCommerce avec Select2 (ou le select natif) et il déborde/se superpose avec le menu. Ajoute ça à la fin du CSS du widget :

CSS widget Validation de la commande — Elementor
Code ∙ Version 4 
Ça corrige le select pays en lui donnant une hauteur fixe, un z-index correct pour ne pas passer sous le menu, et un style cohérent que ce soit le select natif ou Select2. Le dropdown quand on ouvre la liste est aussi stylisé (fond noir sur l'option survolée, coins carrés).

https://wp-plestan.logiciel-arteo.fr/ j'ai ajouté Mon compte au menu mais ca surcharge une idée de l'avoir de maniere harmonieuse et coherente avec le style general ?

16:39

Fetched: Authentic Nice Gallery - Authentic Nice Gallery
Fetched: Authentic Nice Gallery - Authentic Nice Gallery
Je vois que "Mon compte" n'apparaît plus dans le menu de la page d'accueil — tu l'as peut-être retiré entre temps. Mais je comprends le problème : le menu a déjà 8 entrées (Galerie, Coups de cœur, Artistes, Oeuvres, Actualités, Évènements, Services, Contact), ajouter "Mon compte" + l'icône panier ça fait trop sur une seule ligne.

Pour une galerie d'art haut de gamme, voici ce que je te recommande :

Approche : icônes à droite du menu
Au lieu d'ajouter "Mon compte" en texte dans le menu, utilise des icônes discrètes à droite de la navigation, comme le font la plupart des sites e-commerce élégants. L'idée : une petite icône utilisateur (personne) pour "Mon compte" et une icône panier à côté.

Si ton header est construit avec Elementor Theme Builder, voici comment faire :

1. Édite ton header dans Elementor → Theme Builder → Header

2. Ajoute une section à droite du menu de navigation avec deux widgets Icône (ou un widget HTML) :

3. Ou plus simple — ajoute ce code dans un widget HTML dans le header, à droite du menu nav :

html
<div class="ang-header-icons">
    <a href="/mon-compte/" class="ang-icon-link" title="Mon compte">
        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
            <circle cx="12" cy="7" r="4"/>
        </svg>
    </a>
    <a href="/panier/" class="ang-icon-link ang-cart-link" title="Panier">
        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/>
            <line x1="3" y1="6" x2="21" y2="6"/>
            <path d="M16 10a4 4 0 0 1-8 0"/>
        </svg>
    </a>
</div>
4. Et le CSS à mettre dans le widget HTML ou dans le CSS global :

CSS — Icônes Mon compte + Panier dans le header
Code 
Résultat
Tu auras un header propre : le menu de navigation à gauche/centre avec les 8 entrées actuelles (sans "Mon compte"), et à droite juste deux petites icônes fines (utilisateur + sac shopping) très discrètes en gris, qui passent en noir au survol. C'est l'approche classique des galeries d'art et boutiques de luxe en ligne.

Si tu veux aller encore plus loin, tu peux aussi retirer "Contact" du menu principal et le garder uniquement dans le footer — ça allègera encore. Mais c'est une question de goût.

Tu veux que j'adapte quelque chose ou que je t'aide à intégrer ça dans ton header Elementor ?





Claude est une IA et peut faire des erreurs. Veuillez vérifier les réponses.
/* ============================================
   ICÔNES HEADER — Mon compte + Panier
   ============================================ */

.ang-header-icons {
  display: flex !important;
  align-items: center !important;
  gap: 20px !important;
}

.ang-icon-link {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #1a1a1a !important;
  text-decoration: none !important;
  transition: color 0.3s ease, opacity 0.3s ease !important;
  opacity: 0.7 !important;
  position: relative !important;
}

.ang-icon-link:hover {
  color: #1a1a1a !important;
  opacity: 1 !important;
}

.ang-icon-link svg {
  width: 20px !important;
  height: 20px !important;
  stroke: currentColor !important;
}

/* --- Supprime l'icône panier WooCommerce par défaut si présente --- */
.woocommerce-cart-widget,
a.cart-contents,
.elementor-menu-cart__toggle-button {
  display: none !important;
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-4c2f1d0 *//* ============================================
   HEADER — Icône Mon compte + Menu panier
   À mettre dans CSS additionnel ou CSS global Elementor
   ============================================ */

/* --- Conteneur des icônes (3ème conteneur) --- */
.elementor-element .ang-header-icons {
  display: flex !important;
  align-items: center !important;
  gap: 16px !important;
}

/* --- Icône Mon compte --- */
.ang-icon-link {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #1a1a1a !important;
  text-decoration: none !important;
  transition: opacity 0.3s ease !important;
  opacity: 0.6 !important;
}

.ang-icon-link:hover {
  opacity: 1 !important;
}

.ang-icon-link svg {
  width: 22px !important;
  height: 22px !important;
}

/* ============================================
   MENU PANIER ELEMENTOR
   ============================================ */

/* --- Bouton toggle du panier --- */
.elementor-menu-cart__toggle .elementor-button,
.elementor-menu-cart__toggle .elementor-button:hover,
.elementor-menu-cart__toggle .elementor-button:focus,
.elementor-menu-cart__toggle .elementor-button:active {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-color: transparent !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 0 !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
}

/* --- Supprimer la bordure autour du bloc panier --- */
.elementor-menu-cart__toggle-wrapper,
.elementor-menu-cart__toggle,
.elementor-widget-woocommerce-menu-cart .elementor-widget-container {
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

/* --- Icône panier --- */
.elementor-menu-cart__toggle .elementor-button-icon {
  font-size: 20px !important;
  color: #1a1a1a !important;
  opacity: 0.6 !important;
  transition: opacity 0.3s ease !important;
}

.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
  opacity: 1 !important;
}

/* --- Texte du prix (ex: 59000,00 €) --- */
.elementor-menu-cart__toggle .elementor-button-text {
  font-size: 0.78rem !important;
  letter-spacing: 0.5px !important;
  color: #1a1a1a !important;
  font-weight: 400 !important;
  opacity: 0.6 !important;
  transition: opacity 0.3s ease !important;
}

.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-text {
  opacity: 1 !important;
}

/* --- Masquer le prix si tu veux juste l'icône --- */
/* Décommente la ligne ci-dessous si tu veux cacher le montant */
/* .elementor-menu-cart__toggle .elementor-button-text { display: none !important; } */

/* --- Badge compteur (pastille rouge) --- */
.elementor-menu-cart__toggle .elementor-button-icon-qty {
  background: #1a1a1a !important;
  color: #ffffff !important;
  font-size: 0.65rem !important;
  font-weight: 500 !important;
  width: 18px !important;
  height: 18px !important;
  line-height: 18px !important;
  border-radius: 50% !important;
  text-align: center !important;
  position: absolute !important;
  top: -6px !important;
  right: -8px !important;
}

/* --- Conteneur icône panier (pour positionner le badge) --- */
.elementor-menu-cart__toggle .elementor-button-icon {
  position: relative !important;
}

/* ============================================
   DROPDOWN PANIER (au survol/clic)
   ============================================ */

.elementor-menu-cart__container,
.elementor-menu-cart__main {
  border: 1px solid #e0e0e0 !important;
  border-radius: 0 !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08) !important;
}

/* --- Produits dans le dropdown --- */
.elementor-menu-cart__product-name {
  font-size: 0.88rem !important;
  color: #1a1a1a !important;
  font-weight: 400 !important;
}

.elementor-menu-cart__product-name a {
  color: #1a1a1a !important;
  text-decoration: none !important;
}

.elementor-menu-cart__product-price {
  font-size: 0.85rem !important;
  color: #666666 !important;
}

.elementor-menu-cart__product-image img {
  border-radius: 0 !important;
  border: 1px solid #f5f5f5 !important;
}

/* --- Bouton supprimer dans le dropdown --- */
.elementor-menu-cart__product .remove_from_cart_button {
  color: #999999 !important;
  transition: color 0.3s ease !important;
}

.elementor-menu-cart__product .remove_from_cart_button:hover {
  color: #c0392b !important;
}

/* --- Sous-total --- */
.elementor-menu-cart__subtotal {
  font-size: 0.82rem !important;
  text-transform: uppercase !important;
  letter-spacing: 1px !important;
  color: #1a1a1a !important;
  font-weight: 500 !important;
  border-top: 1px solid #e0e0e0 !important;
  padding-top: 12px !important;
}

/* --- Bouton "Voir le panier" --- */
.elementor-menu-cart__footer-buttons a.elementor-button--view-cart {
  font-size: 0.72rem !important;
  text-transform: uppercase !important;
  letter-spacing: 1.5px !important;
  background: transparent !important;
  background-color: transparent !important;
  color: #1a1a1a !important;
  border: 1px solid #1a1a1a !important;
  border-radius: 0 !important;
  padding: 10px 20px !important;
  text-decoration: none !important;
  transition: all 0.3s ease !important;
}

.elementor-menu-cart__footer-buttons a.elementor-button--view-cart:hover {
  background: #1a1a1a !important;
  background-color: #1a1a1a !important;
  color: #ffffff !important;
}

/* --- Bouton "Commander" --- */
.elementor-menu-cart__footer-buttons a.elementor-button--checkout,
.elementor-menu-cart__footer-buttons a.elementor-button--checkout:visited,
.elementor-menu-cart__footer-buttons a.elementor-button--checkout:active {
  font-size: 0.72rem !important;
  text-transform: uppercase !important;
  letter-spacing: 1.5px !important;
  background: #1a1a1a !important;
  background-color: #1a1a1a !important;
  color: #ffffff !important;
  border: 1px solid #1a1a1a !important;
  border-radius: 0 !important;
  padding: 10px 20px !important;
  text-decoration: none !important;
  transition: all 0.3s ease !important;
}

.elementor-menu-cart__footer-buttons a.elementor-button--checkout:hover {
  background: transparent !important;
  background-color: transparent !important;
  color: #1a1a1a !important;
}/* End custom CSS */