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.
- 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-phoneoutel-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
- Important S’assurer que le nom du champ Téléphone est bien
Redirection :
Rediriger les pages Auteur vers la page d'accueil
Dans SNIPPETS >
Ce code a besoin de l’extension Code Snippets.
- 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 >
- 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 '' , PHP_EOL;
// Description
$meta_description = get_post_meta( $post->ID, 'wpmsw-meta-desc', true );
if ( !empty($meta_description) ) {
echo '' , PHP_EOL;
}
// Url
echo '', PHP_EOL;
// Type
if ( is_singular('post') ) {
echo '', PHP_EOL;
} else {
echo '', PHP_EOL;
}
// Site
echo '' , 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 '',PHP_EOL,
'',PHP_EOL,
'',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 >
- Cliquer sur le bouton Ajouter (Add New)
- Titre : LocalBusiness Structured Data (schema) – FR
- À droite du titre, sélectionner dans la liste déroulante : Content HTML
- Coller le code
- 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)
- Cliquer sur le bouton See options à droite de cette étiquette.
- Noter l’identifiant du code court.
- Dans la colonne de droite de l’interface :
- Cliquer sur le bouton Ajouter (Add New)
- Titre : LocalBusiness Structured Data (schema) – EN
- À droite du titre, sélectionner dans la liste déroulante : Content HTML
- Coller le code
- 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)
- Cliquer sur le bouton See options à droite de cette étiquette.
- Noter l’identifiant du code court.
- Dans la colonne de droite de l’interface :
- 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 :
- Modifier le code
Intégration des données structurées LocalBusiness dans le 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 la colonne de droite de l’interface :
Dans Pages >
- 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 :
Numéro de téléphone, adresse et heures d'ouverture
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 Snippets > Tous les extraits :
- LocalBusiness Structured Data (schema) - FR
- LocalBusiness Structured Data (schema) - EN
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 : https://validator.schema.org/
- Important Cliquer sur le bouton Enregistrer le brouillon (ne surtout pas publier!!!)
Source
Formulaire
Formulaire :
Remplacer l'option par défaut des listes déroulantes
Dans SNIPPETS >
Ce code a besoin de l’extension Code Snippets.
- 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('—Please choose an option—', '—Please choose an option—', '–Please choose an option–'),
'— Choisissez —',
$html
);
$html = str_replace(
array('—Veuillez choisir une option—', '—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é >
- Cliquer sur le bouton Ajouter
- Titre : KPI
- Emplacement : </body> – End
- Priorité : 10
- Copier et coller le code suivant :
-
- 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
- Dans la fenêtre qui s’affiche :
- La condition Dans tout le site doit être indiqué
- Cliquer sur le bouton Save & Close
- 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).
- 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.
- 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 '', 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>.