recherche

Maison  >  Questions et réponses  >  le corps du texte

Désactiver complètement le point de terminaison WooCommerce

<p>J'ai beaucoup cherché en ligne mais je n'ai pas encore trouvé de réponse. Je m'en remets donc aux experts ici. </p> <p>Je souhaite désactiver certains points de terminaison WooCommerce. Internet m'a dit que les éléments du menu WooCommerce peuvent être désactivés via le crochet <code>woocommerce_account_menu_items</code>, comme indiqué ci-dessous : </p> <pre class="brush:php;toolbar:false;">add_filter ( 'woocommerce_account_menu_items', 'my_remove_my_account_links' ); fonction my_remove_my_account_links( $menu_links ){ /*** Décommentez les lignes appropriées pour supprimer des * points de terminaison dans l'écran WooCommerce Mon compte.*/ //unset( $menu_links['dashboard'] ); // Supprimer le tableau de bord //unset( $menu_links['edit-address'] ); // Adresses //unset( $menu_links['payment-methods'] ); // Supprimer les modes de paiement //unset( $menu_links['orders'] ); // Supprimer les commandes //unset( $menu_links['downloads'] ); // Désactiver les téléchargements //unset( $menu_links['edit-account'] ); // Supprimer l'onglet Détails du compte //unset( $menu_links['customer-logout'] ); // Supprimer le lien de déconnexion retourner $menu_links ; }</pré> <p>Mais le gros problème ici est que cela supprime simplement les liens de menu sur le front-end. Je peux toujours accéder au point de terminaison non défini via l'URL directe. Ainsi, lorsque je tape <code>https://example.de/myaccount/[unset-endpoint]</code>, je peux toujours accéder au contenu. </p> <p>J'ai trouvé un moyen d'accéder à la redirection via une URL directe. J'ai utilisé le hook <code>woocommerce_before_account_payment_methods</code> situé dans le modèle des méthodes de paiement (/woocommerce/templates/myaccount/payment-methods.php) pour revenir au tableau de bord : </p> <pre class="brush:php;toolbar:false;">fonction redirect_forbidden_access_account_endpoints(){ wp_redirect(wc_get_account_endpoint_url('tableau de bord')); } add_action('woocommerce_before_account_payment_methods', 'redirect_forbidden_access_account_endpoints');</pre> <p>Cette méthode est très utile, mais ne fonctionne qu'avec le point de terminaison <code>payment-methods</code> J'ai essayé de faire la même chose avec le point de terminaison natif <code>downloads</code> et un point de terminaison personnalisé sans succès. </p> <p>Ma question est donc la suivante : existe-t-il une solution fiable pour rediriger l'accès aux URL d'un point de terminaison WooCommerce désactivé spécifique vers le tableau de bord ? </p>
P粉596191963P粉596191963497 Il y a quelques jours651

répondre à tous(2)je répondrai

  • P粉725827686

    P粉7258276862023-08-28 21:32:12

    Vous pouvez le faire des deux manières suivantes :

    1. Mettre une valeur nulle dans les paramètres d'arrière-plan
      Accédez à WooCommerce > Paramètres > Avancé et dans la zone de saisie du point de terminaison du compte, vous pouvez supprimer la valeur du point de terminaison spécifique et enregistrer la valeur vide.

      De cette façon, vous ne verrez pas la page du point de terminaison ou l'élément de menu sur la page du compte. Si vous visitez cette URL, vous verrez la page d'accueil sur l'URL que vous visitez.

    2. Variable de requête non définie
      Vous pouvez utiliser des hooks de filtre pour supprimer les variables de requête. https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L85
      En ligne 85 vous pouvez trouver la fonction avec toutes les variables de requête.

      https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L232
      Et à la ligne 232, vous pouvez trouver la fonction qui obtient les variables de requête, qui possède également des filtres. Vous pouvez utiliser un filtre et supprimer les points de terminaison requis.

      Si vous utilisez cette méthode, vous devrez également supprimer l'élément de l'élément du menu de navigation et vous devrez également réenregistrer les paramètres du lien permanent.

      Ensuite, si vous visitez l'URL de ce point de terminaison, vous verrez la page d'accueil à l'URL que vous visitez.

    Dans les deux cas, vous ne verrez pas de page 404.

    répondre
    0
  • P粉217629009

    P粉2176290092023-08-28 15:42:08

    La réponse est : Oui, il y en a ! Mon crochet était mal écrit. J'utilise maintenant les hooks wp. Est-ce légal ?

    function redirect_forbidden_access(){
        $current_endpoint = WC()->query->get_current_endpoint();
        if($current_endpoint == "payment-methods" 
          || $current_endpoint == "add-payment-method"
          || $current_endpoint == "edit-payment-method" 
          || $current_endpoint == "[custom-endpoint]")
        {
            wp_redirect(wc_get_account_endpoint_url('dashboard'));
        }
    }
    add_action('wp', 'redirect_forbidden_access');

    C'est la solution.

    répondre
    0
  • Annulerrépondre