Ändern Sie die URL/den Endpunkt „view-order/order-id“ in WooCommerce Mein Konto – Bestellungen in „orders/order-id“
Lesezeit: 3 Minuten
Benyas
Derzeit ist die URL unter dem WooCommerce-Tab „Meine Bestellungen“ für die Schaltfläche, wenn Sie eine Bestellung im Detail anzeigen, gleich /my-account/view-order/ORDER-ID/
Ich möchte diese URL ändern in /mein-konto/bestellungen/BESTELL-ID/ – So:
aktuelle URL: /my-account/view-order/ORDER-ID/
neue URL: /mein-konto/bestellungen/BESTELL-ID/
Daher habe ich über die WooCommerce-Einstellungen die Ansichtsreihenfolge Endpunkt zu Aufträge
Das funktioniert, die URL des Buttons zur Detailansicht der Bestellung wurde effektiv geändert, nur bekomme ich auf der Bestelldetailseite folgende Meldung
‘Es wurde noch keine Bestellung aufgegeben’.
Ich glaube durch den folgenden Code, der in zu finden ist /plugins/woocommerce/includes/class-wc-order.php | Linie 1675
/**
* Generates a URL to view an order from the my account page.
*
* @return string
*/
public function get_view_order_url() {
return apply_filters( 'woocommerce_get_view_order_url', wc_get_endpoint_url( 'view-order', $this->get_id(), wc_get_page_permalink( 'myaccount' ) ), $this );
}
Ich kann mein Ziel erreichen, aber ich könnte einen Rat gebrauchen. Wer kann mich anleiten?
7uc1f3r
Wechseln /my-account/view-order/ORDER-ID/ URL zu /mein-konto/bestellungen/BESTELL-ID/ kann in wenigen Schritten erfolgen.
Schritt 1) Ändern Sie den Endpunkt der Ansichtsreihenfolge
Die URL für jeden Endpunkt kann in WooCommerce > Einstellungen > Erweitert im Abschnitt Seiteneinrichtung angepasst werden
ODER Sie verwenden die woocommerce_get_endpoint_url Filterhaken statt
function filter_woocommerce_get_endpoint_url( $url, $endpoint, $value, $permalink ) {
// Specific endpoint
if ( $endpoint === 'view-order' ) {
// New URL
$url = $permalink . 'orders/' . $value;
}
return $url;
}
add_filter( 'woocommerce_get_endpoint_url', 'filter_woocommerce_get_endpoint_url', 10, 4 );
Während der Endpunkt jetzt geändert wird, sehen Sie beim Anzeigen der neuen URL die folgende Meldung:
‘Es wurde noch keine Bestellung aufgegeben’.
Dies liegt daran, dass die /myaccount/orders.php Template-Datei wird geladen, dabei sollte dies die /myaccount/view-order.php Schablone
Schritt 2) Stellen Sie sicher, dass die richtige Vorlagendatei geladen ist, dies sowohl für die /mein-konto/bestellungen/ und /mein-konto/bestellungen/BESTELL-ID/ URL.
Daher müssen wir die vorhandene überschreiben woocommerce_account_orders() Funktion, die in der zu finden ist /includes/wc-template-functions.php Datei. Damit unsere benutzerdefinierte Funktion ausgeführt wird
Wichtig: Es ist nicht beabsichtigt, diese Funktion durch eine Änderung der Kerndatei zu ändern!! Sie können dies einfach hinzufügen Funktionen.phpdas liegt daran, dass diese Funktion von eingebettet ist if ( ! function_exists( 'woocommerce_account_orders' ) ) {
Schritt 3) Dieser Schritt ist optional. Dadurch wird sichergestellt, dass die /my-account/view-order/ORDER-ID/ URL (die jetzt die alte URL ist) ist nicht mehr erreichbar