Deaktivieren Sie den WooCommerce-Endpunkt vollständig
<p>Ich habe viel online gesucht, aber noch keine Antwort gefunden.
Deshalb vertraue ich hier auf die Experten. </p>
<p>Ich möchte einige WooCommerce-Endpunkte deaktivieren. Im Internet wurde mir mitgeteilt, dass WooCommerce-Menüelemente über den Hook <code>woocommerce_account_menu_items</code> deaktiviert werden können: </p>
<pre class="brush:php;toolbar:false;">add_filter ( 'woocommerce_account_menu_items', 'my_remove_my_account_links' );
Funktion my_remove_my_account_links( $menu_links ){
/*** Kommentieren Sie die entsprechenden Zeilen aus, um bestimmte Zeilen zu entfernen
* Endpunkte im WooCommerce-Bildschirm „Mein Konto“.*/
//unset( $menu_links['dashboard'] ); // Dashboard entfernen
//unset( $menu_links['edit-address'] ); // Adressen
//unset( $menu_links['zahlungsmethoden'] ); // Zahlungsmethoden entfernen
//unset( $menu_links['orders'] ); // Bestellungen entfernen
//unset( $menu_links['downloads'] ); // Downloads deaktivieren
//unset( $menu_links['edit-account'] ); // Registerkarte „Kontodetails“ entfernen
//unset( $menu_links['customer-logout'] ); // Abmeldelink entfernen
return $menu_links;
}</pre>
<p>Aber das große Problem hierbei ist, dass dadurch lediglich die Menü-Links im Frontend entfernt werden.
Über die direkte URL kann ich weiterhin auf den nicht eingestellten Endpunkt zugreifen. Wenn ich also <code>https://example.de/myaccount/[unset-endpoint]</code> eingebe, kann ich weiterhin auf den Inhalt zugreifen. </p>
<p>Ich habe eine Möglichkeit gefunden, über eine direkte URL auf die Weiterleitung zuzugreifen. Ich habe den Hook <code>woocommerce_before_account_ payment_methods</code> verwendet, der sich in der Zahlungsmethodenvorlage (/woocommerce/templates/myaccount/ payment-methods.php) befindet, um zurück zum Dashboard umzuleiten: </p>
<pre class="brush:php;toolbar:false;">function restart_forbidden_access_account_endpoints(){
wp_redirect(wc_get_account_endpoint_url('dashboard'));
}
add_action('woocommerce_before_account_paid_methods', 'redirect_forbidden_access_account_endpoints');</pre>
<p>Diese Methode ist sehr nützlich, funktioniert aber nur mit dem <code> payment-methods</code> Ich habe dasselbe mit dem nativen <code>downloads</code>-Endpunkt und einem benutzerdefinierten Endpunkt versucht, ohne Erfolg. </p>
<p>Meine Frage lautet also: Gibt es eine zuverlässige Lösung, um den URL-Zugriff von einem bestimmten deaktivierten WooCommerce-Endpunkt auf das Dashboard umzuleiten? </p>