Codes Snippets avancés

Table des matières

Code de base

Code Snippets :

Tous les codes de base à installer par défaut

Version : 2024-09-06.

Formulaire :

Formater le numéro de téléphone dans le courriel expédié

Dans SNIPPETS >

Ce code a besoin de l’extension Code Snippets.

  1. Cliquer sur le bouton Ajouter / Add New
    • Titre : Formulaire – Formater le numéro de téléphone
    • Copier et coller le code suivant :
				
					add_filter( 'wpcf7_mail_tag_replaced',
 
  function( $replaced, $submitted, $html, $mail_tag ) {
    if ( 'your-phone' == $mail_tag->field_name() || 'tel-436' == $mail_tag->field_name() ) {
       $masque_tel 			= '/^\(?([0-9]{3})\)?( |-|\.)?([0-9]{3})( |-|\.)?([0-9]{4})$/i';
	   $masque_telsansfrais 	= '/^1( |-|\.)?\(?([0-9]{3})\)?( |-|\.)?([0-9]{3})( |-|\.)?([0-9]{4})$/i';
	   $replace_tel 		 	= '$1 $3-$5';
	   $replace_telsansfrais 	= '1 $2 $4-$6';
	   if ( preg_match($masque_tel, $submitted) ) {
	      $replaced = preg_replace($masque_tel, $replace_tel, $submitted);	
       } elseif ( preg_match($masque_telsansfrais, $submitted) ) {
		  $replaced = preg_replace($masque_telsansfrais, $replace_telsansfrais, $submitted);
	   }
    }
    return $replaced;
  },
  10, 4
);
				
			
    • Important S’assurer que le nom du champ Téléphone est bien your-phone ou tel-436, sinon le mettre à jour dans ce code (ligne 4) ou dans le code du formulaire.
    • Cocher le bouton radio Exécuter uniquement dans l’interface publique / Only run on site front-end
    • Cliquer sur le bouton Enregistrer les changements et activer / Saves Changes and Activate
Redirection :

Rediriger les pages Auteur vers la page d'accueil

Dans SNIPPETS >

Ce code a besoin de l’extension Code Snippets.

  1. Cliquer sur le bouton Ajouter / Add New
    • Titre : Rediriger les pages Auteur vers la page d’accueil
    • Copier et coller le code suivant :
				
					add_action( 'template_redirect', function() {
    if ( is_author() ) {
        wp_redirect( home_url(), 301);
        exit;
    }
} );
				
			
    • Cocher le bouton radio Exécuter uniquement dans l’interface publique / Only run on site front-end
    • Cliquer sur le bouton Enregistrer les changements et activer / Saves Changes and Activate
Facebook :

Générer les métadonnées Open Graph

Dans Code Snippets >
  1. Cliquer sur le bouton Ajouter / Add New
    • Titre : Facebook – Métadonnées Open Graph
    • Code :
				
					/* v.2024-09-06 */

function msw_metadonnees_facebook() {
	global $post;
	
	// Si ce n'est ni article, ni une page
    if ( !is_singular() ) {
        return;
	}

	// Title
	$meta_title = get_post_meta( $post->ID, 'wpmsw-meta-title', true );
	if ( empty($meta_title) ) {
		$meta_title = get_the_title();
	}
	echo '<meta property="og:title" content="' , $meta_title , '">' , PHP_EOL;
	
	// Description
	$meta_description = get_post_meta( $post->ID, 'wpmsw-meta-desc', true );
	if ( !empty($meta_description) ) {
		echo '<meta property="og:description" content="' , $meta_description , '">' , PHP_EOL;
	}
	
	// Url
    echo '<meta property="og:url" content="' . get_permalink() . '">', PHP_EOL;
	
	// Type
	if ( is_singular('post') ) {
		echo '<meta property="og:type" content="article">', PHP_EOL;
	} else {
		echo '<meta property="og:type" content="website">', PHP_EOL;
	}
	
	// Site
	echo '<meta property="og:site_name" content="' , get_bloginfo('name') , '">' , PHP_EOL;
	
	// Image
	$image = null;
	
	// -- Par défaut
	if ( !has_post_thumbnail( $post->ID ) ) {
		$query = get_posts(['post_type' => 'attachment',
							'post_status' => 'inherit',
							'posts_per_page' => 1,
							'title' => 'fb-share'
						   ]);
		if ($query) {
			$image_post = array_pop($query);
			$image_meta = wp_get_attachment_metadata($image_post->ID);
			$image['src'] = wp_get_attachment_url($image_post->ID);
			$image['width'] = $image_meta['width'];
			$image['height'] = $image_meta['height'];
		}
		
	// -- Spécifique aux articles
	} else {
		$thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' );
		$image['src'] = esc_attr( $thumbnail_src[0] );
		$image['width'] = $thumbnail_src[1];
		$image['height'] = $thumbnail_src[2];
	}

	if ( is_array($image) ) {
		echo '<meta property="og:image" content="',$image['src'],'">',PHP_EOL,
			 '<meta property="og:image:width" content="',$image['width'],'">',PHP_EOL,
			 '<meta property="og:image:height" content="',$image['height'],'">',PHP_EOL;
	}
}
add_action('wp_head', 'msw_metadonnees_facebook', 5);
				
			
    • Cocher le bouton radio Exécuter uniquement dans l’interface publique / Only run on site front-end
    • Description :
				
					Génère des métadonnées Open Graph génériques pour les pages et des spécifiques pour les articles (« image mise de l'avant »).
				
			
    • Cliquer sur le bouton Enregistrer les changements et activer / Saves Changes and Activate

Si vous travaillez sur un site web déjà en ligne (pas en développement), n’oubliez pas de purger la cache du plugin LightSpeed et d’aller rafraîchir la cache de Facebook à l’aide de l’outil : Sharing Debugger de Facebook.

Structured Data :

Intégrer le code LocalBusiness dans un site web multilingue

Dans Code Snippets >
  1. Cliquer sur le bouton Ajouter (Add New)
    1. Titre : LocalBusiness Structured Data (schema) – FR
    2. À droite du titre, sélectionner dans la liste déroulante : Content HTML
    3. Coller le code
    4. Description :
				
					Pour les pages françaises
				
			
    • Dans la colonne de droite de l’interface :
      • Sélectionner pour la Location : Where inserted in editor
      • Cliquer sur le bouton Enregistrer les changements et activer (Saves Changes and Activate)
      Une fois le code enregistré, une étiquette Shortcode s’affiche dans l’encadré au-dessous du bouton que vous venez de cliquer :
      • Cliquer sur le bouton See options à droite de cette étiquette.
      • Noter l’identifiant du code court.
  1. Cliquer sur le bouton Ajouter (Add New)
    1. Titre : LocalBusiness Structured Data (schema) – EN
    2. À droite du titre, sélectionner dans la liste déroulante : Content HTML
    3. Coller le code
    4. Description :
				
					Pour les pages anglaises
				
			
    • Dans la colonne de droite de l’interface :
      • Sélectionner pour la Location : Where inserted in editor
      • Cliquer sur le bouton Enregistrer les changements et activer (Saves Changes and Activate)
      Une fois le code enregistré, une étiquette Shortcode s’affiche dans l’encadré au-dessous du bouton que vous venez de cliquer :
      • Cliquer sur le bouton See options à droite de cette étiquette.
      • Noter l’identifiant du code court.
  1. Cliquer sur le bouton Ajouter (Add New)
    • Titre : LocalBusiness Structured Data (schema)
    • Dans la liste déroulante à droite du titre, rester sur Fonctions PHP
    • Code :
				
					function msw_add_localbusiness_code() {
	
	if ( is_front_page() ) {
	
	    // Récupérer la langue active via WPML si disponible
	    $current_locale = apply_filters('wpml_current_language', null);

	    // Si WPML n'est pas actif, on utilise la locale par défaut (pour TranslatePress ou site monolingue)
	    if ( !$current_locale ) {
	    	$current_locale = get_locale();
    	}

	    // Extraire le code langue sur 2 lettres
	    $current_language = substr( $current_locale, 0, 2 );

    	// Choisir le bon code 
	    if ( $current_language === 'en' ) { 
	    	$strutured_data = do_shortcode('[_SHORTCODE_EN_]');
    	} else {
    		$strutured_data = do_shortcode('[_SHORTCODE_FR_]');
    	}
	
    	echo $strutured_data;
    	
    }
}
add_action('wp_head', 'msw_add_localbusiness_code');
				
			
    • Modifier le code [_SHORTCODE_EN_] par le code [code_snippet id=X] où le [X] sera remplacé l’ID du code LocalBusiness en version anglaise.
    • Modifier le code [_SHORTCODE_FR_] par le code [code_snippet id=X] où le [X] sera remplacé l’ID du code LocalBusiness en version française.
    • Description :
				
					Intégration des données structurées LocalBusiness dans le <head> du site web.

IMPORTANT Ce code fait référence aux codes « LocalBusiness Structured Data (schema) - FR » et « LocalBusiness Structured Data (schema) - EN » par leurs ID

v. 2025-06-12
				
			
    • Dans la colonne de droite de l’interface :
      • Sélectionner pour la Location : Exécuter uniquement dans l’interface publique / Only run on site front-end
      • Cliquer sur le bouton Enregistrer les changements et activer (Saves Changes and Activate)
    • Important Tester si le code est bien installé et valise à l’aide de https://validator.schema.org/
      • Si le site web utilise Lite Speed Cache, purger la cache afin que les pages d’accueil se mettent à jour (Losange dans la barre du haut > Tout purger).
    • Important Ajouter votre site à la liste des Sites web clients WP qui utilisent ce code.
Dans Pages >
  1. Cliquer sur le bouton Ajouter une page
    • Titre : *** À LIRE avant d’effectuer une mise à jour du contenu
    • Adapter le message suivant selon les informations contenus dans les code JSON :
				
					<h2>Numéro de téléphone, adresse et heures d'ouverture</h2>

Le numéro de téléphone, l'adresse, les coordonnées géographiques (latitude/longitude) ainsi que les heures d'ouverture sont écrits dans des codes pour les données structurées LocalBusiness (français et anglais). Vous trouverez ces codes dans <strong>Snippets</strong> > Tous les extraits : 

<ul>
    <li>LocalBusiness Structured Data (schema) - FR</li>
    <li>LocalBusiness Structured Data (schema) - EN</li>
</ul>

Ces codes sont très sensibles à la structure, donc veuillez ne pas effacer de virgules, de double guillemets, etc., ni d'ajouter des espaces en trop.

Une fois vos modifications faites, vous pouvez tester si ces codes sont toujours fonctionnels en testant une url en français et une en anglais ici : <a href="https://validator.schema.org/" target="_blank">https://validator.schema.org/</a>
				
			
  1. Important Cliquer sur le bouton Enregistrer le brouillon (ne surtout pas publier!!!)

Formulaire

Formulaire :

Remplacer l'option par défaut des listes déroulantes

Dans SNIPPETS >

Ce code a besoin de l’extension Code Snippets.

  1. Cliquer sur le bouton Ajouter / Add New
    • Titre : Formulaire – Remplacer l’option par défaut des listes déroulantes
    • Copier et coller le code suivant :
				
					function msw_wpcf7_form_elements($html) {
    $html = str_replace(
        array('&#8212;Please choose an option&#8212;', '—Please choose an option—', '–Please choose an option–'),
        '— Choisissez —',
        $html
    );
    $html = str_replace(
        array('&#8212;Veuillez choisir une option&#8212;', '—Veuillez choisir une option—', '–Veuillez choisir une option–'),
        '— Choisissez —',
        $html
    );
    return $html;
}
add_filter('wpcf7_form_elements', 'msw_wpcf7_form_elements');
				
			
    • Vous pouvez personnaliser le nouveau libellé « — Choisissez — » aux lignes 4 et 9 ou le laisser tel quel.
    • Cocher le bouton radio Exécuter l’extrait partout / Run snippet everywhere
    • Cliquer sur le bouton Enregistrer les changements et activer / Saves Changes and Activate

KPI

KPI :

Ajouter les KPI de base

Dans Elementor > Code personnalisé >
  1. Cliquer sur le bouton Ajouter
    • Titre : KPI
    • Emplacement : </body> – End
    • Priorité : 10
    • Copier et coller le code suivant :
				
					<script>
	function sendEvent(action, params) {
		params = params || {};
		if (typeof gtag === 'function') {
			gtag('event', action, params);
		}
	}

   var links, i;

	//
	// Liens téléphoniques
	//
	links = document.body.querySelectorAll('a[href^="tel:"], div[data-ha-element-link*="tel:"]');
	for (var i = 0; i < links.length; i++) {
		links[i].addEventListener('click', function() {
			sendEvent('click_phone');
		});
	}

	//
	// Liens mailto
	//
	links = document.body.querySelectorAll('a[href^="mailto:"], div[data-ha-element-link*="mailto:"]');
	for (i = 0; i < links.length; i++) {
		links[i].addEventListener('click', function() {
			sendEvent('click_email');
		});
	}

	//
	// Liens vers Google Maps
	//	
	links = document.body.querySelectorAll('a[href*="google.com/maps"], a[href*="google.ca/maps"], a[href*="goo.gl/maps"], div[data-ha-element-link*="google.com\\\\\\\/maps"], div[data-ha-element-link*="google.ca\\\\\\\/maps"], div[data-ha-element-link*="goo.gl\\\\\\\/maps"]');
	for (i = 0; i < links.length; i++) {
		links[i].addEventListener('click', function() {
			sendEvent('click_address');
		});
	}

	//
	// Liens vers Facebook
	// 	
	links = document.body.querySelectorAll('a[href*="facebook.com/"], div[data-ha-element-link*="facebook.com"]');
	for (i = 0; i < links.length; i++) {
		links[i].addEventListener('click', function() {
			sendEvent('click_facebook');
		});
	}

	//
	// Liens vers Instagram
	// 	
	links = document.body.querySelectorAll('a[href*="instagram.com/"], div[data-ha-element-link*="instagram.com"]');
	for (i = 0; i < links.length; i++) {
		links[i].addEventListener('click', function() {
			sendEvent('click_instagram');
		});
	}

	//
	// Liens vers Messenger
	// 	
	links = document.body.querySelectorAll('a[href*="m.me/"],a[href*="messenger.com/]');
	for (i = 0; i < links.length; i++) {
		links[i].addEventListener('click', function() {
			sendEvent('click_messenger');
		});
	}

	//
	// Formulaire envoyé 
	// Personnaliser le id et le nom du formulaire
	//		
	document.addEventListener('wpcf7mailsent', function( event ) {
		//if ('8' == event.detail.contactFormId) {
			sendEvent('form_complete', {form_name: 'Formulaire de contact', event_label: 'Formulaire de contact'});
		//}
	}, false);
	
</script>

				
			
				
					<!-- KPI 2024-11-28 -->
<script>
    function sendEvent(action, params = {}) {
        if (typeof gtag === 'function') {
            gtag('event', action, params);
        }
    }

    function addClickEvent(selector, action) {
        const elements = document.body.querySelectorAll(selector);
        elements.forEach(element => {
            element.addEventListener('click', () => sendEvent(action));
        });
    }

    // Liens téléphoniques
    addClickEvent('a[href^="tel:"], div[data-ha-element-link*="tel:"]', 'click_phone');

    // Liens mailto
    addClickEvent('a[href^="mailto:"], div[data-ha-element-link*="mailto:"]', 'click_email');

    // Liens vers Facebook
    addClickEvent('a[href*="facebook.com/"], div[data-ha-element-link*="facebook.com"]', 'click_facebook');

    // Formulaire envoyé (personnaliser le id et le nom du formulaire si nécessaire)
    document.addEventListener('wpcf7mailsent', event => {
        // if ('id' == event.detail.contactFormId) {
        sendEvent('form_complete', {form_name: 'Formulaire de contact', event_label: 'Formulaire de contact'});
        //}
    });
</script>
				
			
    • Supprimer les KPI non nécessaires
    • Si plus d’un formulaire (différent), décommenter les lignes 27 et 29 et personnaliser les KPI en fonction de l’identifiant de chaque formulaire.
    • Cliquer sur le bouton Publier
  1. Dans la fenêtre qui s’affiche :
    • La condition Dans tout le site doit être indiqué
    • Cliquer sur le bouton Save & Close
  2. Tester dans Chrome avec l’extension Tag Assistant.
KPI :

Ajouter un KPI sur des éléments ayant déjà un EventListener

				
					document.addEventListener('click', function (event) {

	// Bouton Ajouter au panier
	if (event.target.matches('button[name="add-to-cart"]')) {
		sendEvent('click_add_to_cart_button');

	// Bouton Commander (Payer avec Paypal)
	} else if (event.target.matches('button[name="woocommerce_checkout_place_order"]')) {
		sendEvent('click_order_button');
	}
	
}, false);
				
			

SEO

BLOGUE :

Rediriger les archives d'un blogue et supprimer leurs sitemaps

Dans SNIPPETS >

Ce code a besoin de l’extension Code Snippets.

À personnaliser selon les besoins. Par défaut, ce script redirige les pages d’archives et supprime les sitemaps s’il n’y a qu’une seule catégorie ou étiquette active (liées à des articles).

  1. Cliquer sur le bouton Ajouter / Add New
    • Titre : Blogue – Rediriger les archives et supprimer les sitemaps des dates, catégories et étiquettes
    • Copier et coller le code suivant :
				
					/**
 * Redirect category and tag archives to the main blog page
 */
function msw_redirect_archives() {
	
	$blog_url = '/nouvelles/';
	
	if ( is_date() ) {
        wp_redirect( home_url( $blog_url ), 301 );
        exit;
    }

	if ( is_category() ) {
		$count_categories_with_posts = wp_count_terms( 'category', array( 'hide_empty' => true ) );
		if ( $count_categories_with_posts <= 1 ) {
			wp_redirect( home_url( $blog_url ), 301 );
			exit;
		}
	}
	
	if ( is_tag() ) {
		$count_tags_with_posts = wp_count_terms( 'post_tag', array( 'hide_empty' => true ) );
		if ( $count_tags_with_posts <= 1 ) {
			wp_redirect( home_url( $blog_url ), 301 );
			exit;
		}
	}
}
add_action('template_redirect', 'msw_redirect_archives');

/**
 * Disable sitemaps for blog categories and tags
 */
function msw_remove_sitemaps( $taxonomies ) {

	if ( isset( $taxonomies['category'] ) ) {
		$count_categories_with_posts = wp_count_terms( 'category', array( 'hide_empty' => true ) );
		if ( $count_categories_with_posts <= 1 ) {
        	unset( $taxonomies['category'] );
		}
    }

	if ( isset( $taxonomies['post_tag'] ) ) {
		//$count_tags_with_posts = wp_count_terms( 'post_tag', array( 'hide_empty' => true ) );
		//if ( $count_tags_with_posts <= 1 ) {
        	unset( $taxonomies['post_tag'] );
		//}
    }
	
	return $taxonomies;
}
add_filter( 'wp_sitemaps_taxonomies', 'msw_remove_sitemaps', 9999 );
				
			
    • Cocher le bouton radio Exécuter l’extrait partout / Run snippet everywhere
    • Description :
				
					Redirige les pages d'archives des dates, catégories et étiquettes à la page principale du blogue.

Supprime les sitemaps des catégories et des étiquettes.
				
			
    • Cliquer sur le bouton Enregistrer les changements et activer / Saves Changes and Activate

Médias

Médias :

Autoriser l'upload de fichiers SVG

Dans SNIPPETS >

Ce code a besoin de l’extension Code Snippets.

  1. Cliquer sur le bouton Ajouter / Add New
    • Titre : Autoriser l’upload de fichiers SVG
    • Copier et coller le code suivant :
				
					function enable_svg_upload( $upload_mimes ) {
    $upload_mimes['svg'] = 'image/svg+xml';
    $upload_mimes['svgz'] = 'image/svg+xml';
    return $upload_mimes;
}

add_filter( 'upload_mimes', 'enable_svg_upload', 10, 1 );
				
			
				
					/**
 * Allow SVG uploads for administrator users.
 *
 * @param array $upload_mimes Allowed mime types.
 *
 * @return mixed
 */
add_filter(
	'upload_mimes',
	function ( $upload_mimes ) {
		// By default, only administrator users are allowed to add SVGs.
		// To enable more user types edit or comment the lines below but beware of
		// the security risks if you allow any user to upload SVG files.
		if ( ! current_user_can( 'administrator' ) ) {
			return $upload_mimes;
		}
		$upload_mimes['svg']  = 'image/svg+xml';
		$upload_mimes['svgz'] = 'image/svg+xml';
		return $upload_mimes;
	}
);
/**
 * Add SVG files mime check.
 *
 * @param array        $wp_check_filetype_and_ext Values for the extension, mime type, and corrected filename.
 * @param string       $file Full path to the file.
 * @param string       $filename The name of the file (may differ from $file due to $file being in a tmp directory).
 * @param string[]     $mimes Array of mime types keyed by their file extension regex.
 * @param string|false $real_mime The actual mime type or false if the type cannot be determined.
 */
add_filter(
	'wp_check_filetype_and_ext',
	function ( $wp_check_filetype_and_ext, $file, $filename, $mimes, $real_mime ) {
		if ( ! $wp_check_filetype_and_ext['type'] ) {
			$check_filetype  = wp_check_filetype( $filename, $mimes );
			$ext             = $check_filetype['ext'];
			$type            = $check_filetype['type'];
			$proper_filename = $filename;
			if ( $type && 0 === strpos( $type, 'image/' ) && 'svg' !== $ext ) {
				$ext  = false;
				$type = false;
			}
			$wp_check_filetype_and_ext = compact( 'ext', 'type', 'proper_filename' );
		}
		return $wp_check_filetype_and_ext;
	},
	10,
	5
);

				
			
    • Cocher le bouton radio Exécuter uniquement dans la zone d’administration / Only run in administration area
    • Cliquer sur le bouton Enregistrer les changements et activer / Saves Changes and Activate

À désactiver une fois les SVG téléversés.

WooCommerce

WooCommerce :

Personnaliser les métadonnées

				
					/* Métadonnée Title */
function msw_meta_title( $title ) {
	
	// Page principale de la boutique
	if ( is_shop() ) {
		$title = 'Boutique';
		
	// Page d'une catégorie
	} else if ( is_product_category() ) {
		
		$current_category = get_queried_object();
		$category_id = $current_category->term_id;
		$category_name = $current_category->name;

		// SI catégorie parente
		$parent_id = $current_category->parent;
		if ( $parent_id ) {
			$categorie_parente = get_term_by('id', $parent_id, 'product_cat', OBJECT );
			$title = $categorie_parente->name. ' - ' . $category_name;
			
		// SI aucune catégorie parente
		} else {
			$title = $category_name;
		}

		$title = $title . ' | Entreprise';
	}
	return $title;
}
add_filter('pre_get_document_title', 'msw_meta_title', 15);


/* Métadonnée Description */
function msw_meta_description() {
	
	// Page principale de la boutique
	if ( is_shop() ) {
		echo '<meta name="description" content="...">', PHP_EOL;
	}
	
}
add_action('wp_head', 'msw_meta_description', 1);


/* Métadonnée Robots */
function msw_noindex_paged( $robots ) {

    /* Ne pas indexer les pages 2, 3, 4, etc. */
	if ( is_paged() ) {
		$robots['noindex'] = true;
		$robots['follow'] = true;
		unset($robots['max-image-preview']);
	}
	return $robots;
}
add_filter( 'wp_robots', 'msw_noindex_paged' );

				
			
WooCommerce :

Personnaliser la pagination

				
					function msw_woocommerce_pagination_args_filter( $array ){
	$array['prev_text'] = '<';
	$array['next_text'] = '>';
	return $array;
}
add_filter( 'woocommerce_pagination_args', 'msw_woocommerce_pagination_args_filter' );
				
			
WooCommerce :

Retirer les boutons Ajouter au panier

				
					// Rendre les achats impossibles sur tous les produits
add_filter( 'woocommerce_is_purchasable', '__return_false');

// Retirer les prix sur les produits variables
function msw_variation_price_html( $price, $product ) {
	return '';
}
add_filter( 'woocommerce_variable_price_html', 'msw_variation_price_html', 999, 2 );
				
			
WooCommerce :

Personnaliser les onglets d'un produit

				
					/* Nom de l'onglet */
function msw_woocommerce_product_description_tab_title () {
	return 'Description';
}
add_filter( 'woocommerce_product_description_tab_title', 'msw_woocommerce_product_description_tab_title');

/* Titre dans l'onglet (caché, mais pour SEO) */
function msw_woocommerce_product_description_heading( $heading ){
	return 'Description de la remorque';
}
add_filter( 'woocommerce_product_description_heading', 'msw_woocommerce_product_description_heading' );
				
			
WooCommerce :

Ajouter une classe pour personnaliser le lien Mon compte

				
					function msw_logged_in_filter($classes) {
	if( is_user_logged_in() ) {
		$classes[] = 'customer-logged-in';
	} else {
		$classes[] = 'customer-logged-out';
	}
	return $classes;
}
add_filter('body_class','msw_logged_in_filter');
				
			
Les classes .customer-logged-in et .customer-logged-out s’ajoutent sur la balise <body>.