[Résolu] Ajout d’un menu + point de terminaison personnalisé (Créer un compte)

  • WordPress :5.2
  • Statut : résolu
10 sujets de 1 à 10 (sur un total de 10)
  • Auteur
    Messages
  • #2294573
    HerosFR
    Participant
    Initié WordPress
    36 contributions

    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.
    #2294575
    HerosFR
    Participant
    Initié WordPress
    36 contributions

    J’aimerais donc lier mon menu à un template HTML en quelques sortes

    #2294593
    mathieu42
    Participant
    Maître WordPress
    2025 contributions

    je viens de tester votre code avec les thèmes twenty twenty et storefront et il fonctionne, je vois bien l’onglet « Gestion ».

     

    #2294594
    HerosFR
    Participant
    Initié WordPress
    36 contributions

    L’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 »

    #2294595
    mathieu42
    Participant
    Maître WordPress
    2025 contributions

    c’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.

    #2294596
    HerosFR
    Participant
    Initié WordPress
    36 contributions

    dé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.
    #2294600
    mathieu42
    Participant
    Maître WordPress
    2025 contributions

    le 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.

    #2294632
    HerosFR
    Participant
    Initié WordPress
    36 contributions

    Je 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>';
    }

    #2294638
    HerosFR
    Participant
    Initié WordPress
    36 contributions
    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;
    }

    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

     

    #2294658
    HerosFR
    Participant
    Initié WordPress
    36 contributions

    J’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é

10 sujets de 1 à 10 (sur un total de 10)
  • Vous devez être connecté pour répondre à ce sujet.