Désactiver complètement le point de terminaison WooCommerce
P粉596191963
P粉596191963 2023-08-27 23:22:49
0
2
589
<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粉596191963
P粉596191963

répondre à tous(2)
P粉725827686

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.

P粉217629009

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal