- WordPress :5.2
- Statut : résolu
- Ce sujet contient 9 réponses, 2 participants et a été mis à jour pour la dernière fois par HerosFR, le il y a 4 années et 9 mois.
-
AuteurMessages
-
22 janvier 2020 à 10 h 50 min #2294573
Bonjour,
J’aimerais développer une interface dans un l’onglet mon compte, j’ai sur ma gauche plusieurs menu, j’ajoute donc mon menu que je nomme ‘Gestion’ (Voir screen1)
J’aimerais lui attribuer un point de terminaison et ajouter un simple echo « test de gestion », comme ça quand je clique sur le menu il m’affiche mon texte et me dirige vers mon point de terminaison /mon-compte/gestion
J’arrive à créer un menu grâce à ce code
add_filter( 'woocommerce_account_menu_items', 'add_menu_gestion', 40 );// Ajout d'un nouveau menu
function add_menu_gestion( $menu_links ) {
$menu_links = array_slice( $menu_links, 0, 2, true )
+ array( 'gestion' => 'Gestion' )
+ array_slice( $menu_links, 2, null, true );
return $menu_links;
}Je suis parti ensuite sur quelques pistes mais rien ne change:
add_action( 'init', 'add_rewrite_endpoint_gestion' );
function add_rewrite_endpoint_gestion() {
add_rewrite_endpoint( 'gestion', EP_PAGES );
}
add_action( 'woocommerce_account_gestion_endpoint', 'gestion_endpoint_content' );
function gestion_endpoint_content() {
get_template_part( 'my-account-gestion' );
echo 'test gestion';
}PS: Je dev tout dans un plugin custom pour ne pas toucher dans les fichiers de mon thème pour éviter les problèmes de MAJ ou changement de thème
Ma configuration WP actuelle
- Thème utilisé : Twenty Twenty
- Extensions en place : Woocommerce, etc
- Ce sujet a été modifié le il y a 4 années et 9 mois par HerosFR.
- Ce sujet a été modifié le il y a 4 années et 9 mois par HerosFR.
- Ce sujet a été modifié le il y a 4 années et 9 mois par HerosFR.
Fichiers joints :
Vous devez être connecté pour voir les fichiers joints.22 janvier 2020 à 10 h 51 min #2294575J’aimerais donc lier mon menu à un template HTML en quelques sortes
22 janvier 2020 à 11 h 58 min #2294593je viens de tester votre code avec les thèmes twenty twenty et storefront et il fonctionne, je vois bien l’onglet « Gestion ».
22 janvier 2020 à 12 h 02 min #2294594L’onglet s’ajoute bien, je souhaite intégrer un template html dedans
Pour le moment je veux simplement afficher un echo »Test gestion », mais quand je clique sur mon onglet « gestion » j’ai une erreur et me dirige vers
« https://mon-site-web.fr/mon-compte/gestion/mon-site-web » au lieu de « https://mon-site-web.fr/mon-compte/gestion »
22 janvier 2020 à 12 h 07 min #2294595c’est peut-être le cache de la réécriture d’URL qui doit être remis à zéro.
allez dans l’espace d’administration -> « Réglages » -> « Permaliens » et enregistrez la page sans rien modifier.
22 janvier 2020 à 12 h 12 min #2294596déjà tester, je me suis appuyer sur ce lien pour créer mon code: https://rudrastyh.com/woocommerce/my-account-menu.html
J’aimerais avoir comme dans le screen, mon menu à gauche et quand je clique sur mon menu le texte qui s’affiche avec le echo mais j’ai toujours cette erreur avec le lien de redirection cité au dessus, avec un message d’erreur sur la page web »ERR_TOO_MANY_REDIRECTS »
Fichiers joints :
Vous devez être connecté pour voir les fichiers joints.22 janvier 2020 à 12 h 48 min #2294600le souci vient peut être de ce que vous avez mis dans my-account-gestion.php
mettez « return; » tout au début de ce fichier pour tester si vous avez le même problème.
22 janvier 2020 à 14 h 21 min #2294632Je n’ai pas de fichier my-account-gestion.php je viens de voir qu’il fallait le créer dans le répertoire du thème mais je veux tout faire via mon plugin
Mon code actuel
add_filter( 'woocommerce_account_menu_items', 'add_menu_gestion', 40 );// Ajout d'un nouveau menu
function add_menu_gestion( $menu_links ) {
$menu_links = array_slice( $menu_links, 0, 2, true )
+ array( 'gestion' => 'Gestion' )
+ array_slice( $menu_links, 2, null, true );
return $menu_links;
}
function my_custom_endpoints() {
add_rewrite_endpoint( 'gestion', EP_ROOT | EP_PAGES );
}
add_action( 'woocommerce_account_gestion_endpoint', 'gestion_endpoint_content' );
function gestion_endpoint_content() {
echo 'test gestion';
echo '<p>Hello World!</p>';
}22 janvier 2020 à 15 h 01 min #2294638add_filter( 'woocommerce_account_menu_items', 'add_menu_gestion', 40 );// Ajout d'un nouveau menu
function add_menu_gestion( $menu_links ) {
$menu_links = array_slice( $menu_links, 0, 2, true )
+ array( 'gestion' => 'Gestion' )
+ array_slice( $menu_links, 2, null, true );
return $menu_links;
}
add_action( 'init', 'gestion_add_endpoint' );
function gestion_add_endpoint() {
add_rewrite_endpoint( 'gestion', EP_ROOT | EP_PAGES );
}
add_filter( 'woocommerce_get_endpoint_url', 'gestion_hook_endpoint', 10, 4 );
function gestion_hook_endpoint( $url, $endpoint, $value, $permalink ){
if( $endpoint === 'gestion' ) {
// ok, here is the place for your custom URL, it could be external
$url = site_url("/mon-compte/gestion/");
}
return $url;
}Avec ce code je suis rediriger vers https://mon-siteweb.fr/mon-compte/gestion/mon-siteweb.fr
J’aimerais qu’il m’ouvre l’onglet comme les autres et que je puisse mettre dedans un echo « test »; ou autre
22 janvier 2020 à 16 h 14 min #2294658J’ai trouvé mon erreur c’est au niveau de mon
add_action( 'init', 'gestion_add_endpoint' );
Je venais exécuter mon plugin sur le hooks init donc il ne pouvais pas s’accrocher dessus, j’ai mis mon plugin sur le hook au dessus, maintenant mon hook init est accepté
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.