Désactiver complètement le point de terminaison WooCommerce
P粉596191963
2023-08-27 23:22:49
<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>
Vous pouvez le faire des deux manières suivantes :
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.
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.
La réponse est : Oui, il y en a ! Mon crochet était mal écrit. J'utilise maintenant les hooks wp. Est-ce légal ?
C'est la solution.