Ajouter des customs endpoints à WooCommerce

Créer un custom endpoint ou une page privée sur l'interface client WooCommerce
WooCommerce Lecture 7 minutes • 17 février 2017

Il y a peu, un client m'a demandé de personnaliser son site WooCommerce. Le but étant de proposer dans l'interface client (My Account), un lien supplémentaire (custom endpoint) permettant d'accéder à une page "Fiches Techniques". Dans cette page devaient figurer des fichiers PDF téléchargeables. Cette page devait uniquement être accessible depuis le compte client, par les clients identifiés.
WooCommerce propose d'origine un certains nombre d'endpoints, se limitant aux possibilités suivantes (qu'est-ce que les endpoints WooCommerce ?) :
Endpoints originaux de WooCommerce
Dans notre exemple, nous allons ajouter un 9ème endpoint qui sera donc nommé Fiches techniques. Vous êtes libre de le nommer selon votre besoin spécifique.

Etape 1 : créez votre page comme n'importe qu'elle page WordPress

Ajoutez ce que vous voulez dans cette page et la nommer comme vous le souhaitez. Dans notre exemple, la page s'appelle "fiches techniques". Vous pouvez publier la page ou bien l'enregistrer comme brouillon. L'important est de récupérer l'ID de la page. Pour ce faire, allez dans "Toutes les pages" et survolez le titre de la page que vous venez de créer. Vous verrez apparaître en bas à gauche de votre écran une ligne semblable à celle-ci : post.php?post=21&action=edit
Dans mon cas, l'ID de la page est donc 21.
 

Etape 2 : ouvrez votre fichier functions.php

Copier et coller les fonctions suivantes à la suite dans votre fichier functions.php, et sauvegarder les changements.
L'explication du code vient juste après.
[pastacode lang="php" manual="%2F%2F%20Etape%201%20-%20cr%C3%A9ez%20une%20page%20et%20r%C3%A9cup%C3%A9rez%20son%20ID%0A%2F%2F%20Etape%202%20-%20collez%20l'ensemble%20de%20ces%20fonctions%20dans%20votre%20fichier%20functions.php%0A%2F%2F%20Dans%20cet%20exemple%2C%20fiches%20techniques%20est%20la%20page%20ainsi%20que%20le%20custom%20endpoint%0A%2F%2F%20Ce%20code%20va%20g%C3%A9n%C3%A9rer%20un%20nouveau%20endpoint%20nomm%C3%A9%20fiches%20techniques%20dans%20l'interface%20du%20compte%20client%0A%0Afunction%20custom_wc_end_point()%20%7B%0Aif(class_exists('WooCommerce'))%7B%0Aadd_rewrite_endpoint(%20'fiches-techniques'%2C%20EP_ROOT%20%7C%20EP_PAGES%20)%3B%0A%7D%0A%7D%0Aadd_action(%20'init'%2C%20'custom_wc_end_point'%20)%3B%0A%0Afunction%20custom_endpoint_query_vars(%20%24vars%20)%20%7B%0A%24vars%5B%5D%20%3D%20'fiches-techniques'%3B%0Areturn%20%24vars%3B%0A%7D%0Aadd_filter(%20'query_vars'%2C%20'custom_endpoint_query_vars'%2C%200%20)%3B%0Afunction%20ac_custom_flush_rewrite_rules()%20%7B%0Aflush_rewrite_rules()%3B%0A%7D%0Aadd_action(%20'after_switch_theme'%2C%20'ac_custom_flush_rewrite_rules'%20)%3B%0A%0A%2F%2F%20ajoute%20le%20custom%20endpoint%20comme%20un%20nouvel%20item%20au%20menu%20du%20compte%20client%0Afunction%20custom_endpoint_acct_menu_item(%20%24items%20)%20%7B%0A%24logout%20%3D%20%24items%5B'customer-logout'%5D%3B%0Aunset(%20%24items%5B'customer-logout'%5D%20)%3B%0A%24items%5B'fiches-techniques'%5D%20%3D%20__(%20'Fiches%20Techniques'%2C%20'woocommerce'%20)%3B%20%2F%2F%20remplacer%20%22fiches%20techniques%22%20par%20votre%20custom%20endpoint%0A%24items%5B'customer-logout'%5D%20%3D%20%24logout%3B%0Areturn%20%24items%3B%0A%7D%0Aadd_filter(%20'woocommerce_account_menu_items'%2C%20'custom_endpoint_acct_menu_item'%20)%3B%0A%0A%2F%2F%20r%C3%A9cup%C3%A8re%20le%20contenu%20de%20votre%20page%20(dans%20notre%20cas%20la%20page%20fiches%20techniques%20dont%20l'ID%20est%2021)%0Afunction%20fetch_content_custom_endpoint()%20%7B%0Aglobal%20%24post%3B%0A%24id%20%3D%20%2221%22%3B%20%2F%2F%20l'ID%20de%20votre%20page.%20Pour%20moi%20c'est%2021%20comme%20expliqu%C3%A9%20plus%20haut.%0Aob_start()%3B%0A%24output%20%3D%20apply_filters('the_content'%2C%20get_post_field('post_content'%2C%20%24id))%3B%0A%24output%20.%3D%20ob_get_contents()%3B%0Aob_end_clean()%3B%0Aecho%20%24output%3B%0A%7D%0Aadd_action(%20'woocommerce_account_fichestechniques_endpoint'%2C%20'fetch_content_custom_endpoint'%20)%3B" message="" highlight="" provider="manual"/]

Explication du code

Dans l'étape 1, nous avons créé une page et récupéré son identifiant. Dans mon cas, l'identifiant de ma page "Fiches techniques" est 21.
Dans l'étape 2, nous avons ajouté des fonctions. C'est le moment de les regarder une à une et de comprendre comment elles fonctionnent.

Comprendre la 1ère fonction : custom_wc_end_point()

[pastacode lang="php" manual="%2F%2F%20La%201%C3%A8re%20fonction%20enregistre%20un%20nouveau%20endpoint%0A%0Afunction%20custom_wc_end_point()%20%7B%0Aif(class_exists('WooCommerce'))%7B%0Aadd_rewrite_endpoint(%20'fiches-techniques'%2C%20EP_ROOT%20%7C%20EP_PAGES%20)%3B%0A%7D%0A%7D%0Aadd_action(%20'init'%2C%20'custom_wc_end_point'%20)%3B" message="" highlight="" provider="manual"/]
Cette première fonction enregistre un nouveau custom endpoint pour WooCommerce.
 

Comprendre la 2nde fonction : custom_endpoint_query_vars()

[pastacode lang="php" manual="%2F%2F%20La%202nde%20fonction%20nomme%20notre%20nouveau%20endpoint%0Afunction%20custom_endpoint_query_vars(%20%24vars%20)%20%7B%0A%24vars%5B%5D%20%3D%20'fiches-techniques'%3B%0Areturn%20%24vars%3B%0A%7D%0Aadd_filter(%20'query_vars'%2C%20'custom_endpoint_query_vars'%2C%200%20)%3B" message="" highlight="" provider="manual"/]
Dans la 2nde fonction, nous attribuons un nom à notre custom endpoint (une variable pour être plus précis). Dans cet exemple, le nom est fiches-techniques. Il ne s'agit pas du nom qui figurera dans le lien de menu du compte utilisateur. Il doit être impérativement écrit en minuscule.
 

Comprendre la 3ème fonction : ac_custom_flush_rewrites_rules()

[pastacode lang="php" manual="%2F%2F%20Rafraich%C3%AEt%20les%20permaliens%0Afunction%20ac_custom_flush_rewrite_rules()%20%7B%0Aflush_rewrite_rules()%3B%0A%7D%0Aadd_action(%20'after_switch_theme'%2C%20'ac_custom_flush_rewrite_rules'%20)%3B" message="" highlight="" provider="manual"/]
La 3ème fonction garantie le bon rafraichissement des permaliens lorsque vous changez de thème. Il est d'ailleurs recommandé de re-sauvegardé vos permaliens (Réglages > Permaliens) après avoir ajouté l'ensemble de nos fonctions.
 

Comprendre la 4ème fonction : ac_custom_flush_rewrites_rules()

[pastacode lang="php" manual="function%20custom_endpoint_acct_menu_item(%20%24items%20)%20%7B%0A%24logout%20%3D%20%24items%5B'customer-logout'%5D%3B%0Aunset(%20%24items%5B'customer-logout'%5D%20)%3B%0A%24items%5B'fiches-techniques'%5D%20%3D%20__(%20'Fiches%20Techniques'%2C%20'woocommerce'%20)%3B%20%2F%2F%20remplacer%20%22fiches%20techniques%22%20par%20votre%20custom%20endpoint%0A%24items%5B'customer-logout'%5D%20%3D%20%24logout%3B%0Areturn%20%24items%3B%0A%7D%0Aadd_filter(%20'woocommerce_account_menu_items'%2C%20'custom_endpoint_acct_menu_item'%20)%3B" message="" highlight="" provider="manual"/]
La 4ème fonction ajoute un nouvel item nommé "Fiches Techniques" au menu de l'interface du compte client WooCommerce. Le nom peut ici être en majuscule ou en minuscule. La fonction précise que notre item sera ajouté avant l'item de Déconnexion.

Comprendre la 5ème (et dernière) fonction : fetch_content_custom_endpoint()

[pastacode lang="php" manual="%2F%2F%20r%C3%A9cup%C3%A8re%20le%20contenu%20de%20votre%20page%20(dans%20notre%20cas%20la%20page%20fiches%20techniques%20dont%20l'ID%20est%2021)%0Afunction%20fetch_content_custom_endpoint()%20%7B%0Aglobal%20%24post%3B%0A%24id%20%3D%20%2221%22%3B%20%2F%2F%20l'ID%20de%20votre%20page.%20Pour%20moi%20c'est%2021%20comme%20expliqu%C3%A9%20plus%20haut.%0Aob_start()%3B%0A%24output%20%3D%20apply_filters('the_content'%2C%20get_post_field('post_content'%2C%20%24id))%3B%0A%24output%20.%3D%20ob_get_contents()%3B%0Aob_end_clean()%3B%0Aecho%20%24output%3B%0A%7D%0Aadd_action(%20'woocommerce_account_fichestechniques_endpoint'%2C%20'fetch_content_custom_endpoint'%20)%3B" message="" highlight="" provider="manual"/]
La 5ème fonction associe le nouvel item au contenu de la page ayant l'ID 21, donc "Fiches Techniques". Ainsi lorsque vous cliquerez sur le nouvel item "Fiches techniques" c'est bien le contenu de votre page qui s'affichera. Sans cette fonction, votre lien dirigera vers une erreur 404.
 
Voilà, vous savez maintenant comment ajouter votre propre lien de menu à l'interface du compte client WooCommerce. Seuls les clients pourront le voir.
Pour garantir un accès à vos nouvelles pages uniquement aux clients connectés, et pour rediriger les autres vers une page spécifique - Tutoriel : protéger l'accès à vos pages WordPress et WooCommerce
Cet article vous a plus ? Dîtes-le en commentaire et rejoignez-nous sur Facebook pour partager d'autres astuces et tutoriels gratuits !


Si cet article vous a aidé, lâchez votre plus bel applaudissement en remerciement ! 🤗


Avis clients

Tibow Webdesign

Tous les avis

Anaee France - anaee-france.fr 07/2023

Google Avis
Nous avons eu le plaisir de travailler avec Thibaut pour une refonte totale de notre site web, et avons particulièrement apprécié son dynamisme, ses compétences (notamment en webdesign mais également pour le développement web et la communication), ses conseils pour redonner un coup de jeune à notre site web, et sa réactivité. De plus Thibaut a très vite montré un intérêt pour nos sujets (recherche scientifique, étude des écosystèmes) et rapidement compris nos besoins pour améliorer notre visibilité, c’est un vrai plus ! Je remercie et recommande Thibaut pour le développement de sites web

Sabine Sans Photographe - sabinesans.fr Mai 2023

Google Avis
Je suis très satisfaite de mon site internet, il est épuré et fonctionnel comme je le souhaitais. Merci Thibaut, vous avez su être à l'écoute, rassurant et réactif.

Louise Malassigné - loumade.fr Novembre 2022

Google Avis
J’ai eu l’occasion de travailler avec Thibaut sur la refonte d’un site e-commerce pour un château, cela c’est très bien passé, la cliente était ravie de la prestation et du site. Thibaut est très réactif et professionnel. Je recommande !

Julie Deshayes Aout 2022

Google Avis
Thibaut a aidé mon club de ski nautique à apparaître sur internet , il est d’une rapidité et d’une efficacité extraordinaire, je vous recommande

Centre Emile Durkheim - centreemiledurkheim.fr Avril 2022

Google Avis
Nous avons fait appel à Thibaut pour la refonte de notre site web. nous sommes très contents de sa prestation, tant sur le plan humain que technique. Thibaut s'est rendu disponible. Il a su être à l'écoute, à su s'adapter à nos besoins spécifiques, a été force de propositions. C'est un réel plaisir de travailler avec Thibaut, nous ferons appel de nouveau à lui les yeux fermés.

Nicolas Bourvic - lecirejaune.com 25 février 2022

Consultant junior agence Le Ciré Jaune
Consultant en agence de communication, j'ai à plusieurs reprises fait appel à Thibaut pour la réalisation de sites internet (à ce jour 4). Professionnalisme, réactivité et une vraie compréhension du besoin client définit Thibaut.
Vous pouvez vous fier à son expertise, il saura répondre à vos questions les plus techniques. De plus, Thibaut n'est pas qu'un exécutant mais est force de proposition et construit une relation bienveillante et respectueuse, ce qui est déterminant pour la bonne réalisation d'un projet.

Je recommande vivement et je continuerai à faire appel à Thibaut.

Charlotte Devillers - dydu.ai 25 février 2022

Digital Marketing Manager at dydu
Pour la gestion de notre site web, nous sommes passés d'une agence à Thibaut et nous ne regrettons pas notre décision ! Thibaut est un véritable couteau suisse : c'est un expert en dév, webdesign, web marketing… La complémentarité de toutes ces compétences font que Thibaut comprend rapidement nos objectifs marketing et commerciaux, proposant ainsi des conseils et un accompagnement précieux. En plus de ses compétences techniques multiples, Thibaut est très à l'écoute, réactive, proactif, très bon communicant… Vous pouvez lui faire confiance les yeux fermés ! Merci Thibaut pour ton professionnalisme et ton expertise, c'est un réel plaisir de travailler avec toi.

Philippe Carne - hocklines.fr 16/02/2022

Google Avis
Un professionnel à votre écoute.

Pour notre asso sportive, nous avions besoin de revisiter notre site.
Tibow Webdesign a su nous accompagner du début à la fin de ce projet.

Une écoute active, une recherche de solutions, une connaissance des outils, de la réactivité, de l'adaptation, des conseils généraux sur la communication... Voilà pour l'essentiel des choses que Thibaut a su nous transmettre.

Nous en sommes au début... Mais le nouveau site a été vite adopté par notre public. Et de bonnes stats sont au rendez vous.

Aurore Grand 17 janvier 2022

Google Avis
J'ai vu un commentaire de Thibault sur une extension WordPress, qui ne fonctionnait pas sur mon site. Je l'ai donc contacté pour savoir si il pouvait m'aider. En moins d'une heure, il m'a répondu et il m'a gentiment aider. Un grand merci.

Charlotte Séjourné - Wildust.com 10 septembre 2021

Google Avis
Thibaut est une personne super disponible et très pro.
Chaque projet confié a été géré avec beaucoup de professionnalisme et pas mal de pédagogie pour les néophytes comme moi! C'est super appréciable.
Lire plus