Auf einer WordPress-Website, auf der WooCommerce ausgeführt wird, kann sich der Benutzer in seinem (standardmäßigen) persönlichen Bereich anmelden und Informationen anzeigen wie:
Bestellhistorie
Download
Adressen
Bearbeitungs Information
Ausloggen
In dem orders Registerkarte wird standardmäßig eine Tabelle mit einer Liste aller Bestellungen angezeigt, mit a View Schaltfläche, die zur vollständigen Detailseite dieser Bestellung weiterleitet.
Ich versuche, diese Tabellenansicht in einem modalen Fenster anzuzeigen.
Ich habe kein Problem damit, das Modal mit der darin geladenen Ziel-URL anzuzeigen. Das eigentliche Problem ist, dass die Ziel-URL die der ganzen Seite ist, die wie in einer angezeigt wird <iframe>und ist nicht das, was ich will.
Ich denke, es gibt einen Shortcode, der es ermöglicht, nur diese Tabelle zu laden, oder vielleicht eine Woocommerce-Funktion wie load_order_content_by_id($id)?
Kann mich jemand in die richtige Richtung weisen?
Vielen Dank
===GELÖST===
Danke an Raunak Gupta für den Hinweis auf die richtige Funktion. Ich überschreibe die Orders.php-Vorlage, fügte Modal Window HTML hinzu und bearbeitete sie $actions:
Ich kenne Woocommerce nicht, aber Ihre Frage scheint sehr vage zu sein. Versuchen Sie, mehr Details hinzuzufügen (vielleicht a https://jsfiddle.net/ ) und Sie erhalten möglicherweise mehr Antworten.
– Ruben Pirotte
26. August 2016 um 7:15 Uhr
Ich würde eine Geige machen, wenn es nur möglich wäre, WordPress darin zu laden 🙂 Ich werde versuchen, meinen Beitrag zu klären
– Juri
26. August 2016 um 11:30 Uhr
Wenn jemand das Bedürfnis nach einem Downvoting verspürt, fügen Sie zumindest eine Erklärung dafür hinzu
– Juri
5. Oktober 2016 um 8:18 Uhr
@Yuri Es scheint, dass Sie eine Sicherheitslücke auf Ihrer Website erstellt haben, wenn Sie diesen Code verwendet haben. Dein functions.php nur Schecks is_user_logged_in() nicht, wenn der Benutzer diese Bestellung besitzt. Das bedeutet, dass jede angeforderte Bestell-ID angezeigt wird, solange der Benutzer angemeldet ist – einschließlich der Bestellungen anderer Benutzer. Blick auf den Code Es scheint keine anderen Berechtigungsprüfungen durchzuführen.
– rtpHarry
11. Dezember 2019 um 11:20 Uhr
@Yuri auch, Sie müssen keine Aktion hinzufügen für wp_ajax_nopriv_modal_order weil dies für Ajax-Anfragen von nicht eingeloggten Benutzern gilt.
– rtpHarry
11. Dezember 2019 um 11:21 Uhr
LoicTheAztec
Hier ist der vollständiger Code, um aktuelle Kundenbestellungen in einem modalen Fenster anzuzeigen. Es basiert auf einer klassischen Abfrage, um aktuelle Benutzeraufträge zu erhalten, und auf der Vorlage my-account/orders.php(leicht angepasst)…
Sie müssen Ihrem modalen Fenster vorhandene CSS-Regeln hinzufügen und/oder diese CSS-Regeln anpassen.
Dieser Code ist getestet und voll funktionsfähig.
Danke für die Antwort, aber mit woocommerce_order_details_table( $order_id ) Ich konnte mit wenigen Codezeilen das gewünschte Ergebnis erzielen.
– Juri
31. August 2016 um 14:25 Uhr
@Yuri Da du es nicht wirklich erwähnt hast, habe ich daran gearbeitet, das ist die Woocommerce-Vorlage für aktuelle Kundenbestellungen, mit Paginierung und allem, genauso wie “Mein Konto” => “Bestellungen” (aber ohne Navigation, Menü und alles, was Sie nicht wollen)… Dies ist eine komplette Key-Turn-Lösung (Alternative).
– LoicTheAztec
31. August 2016 um 14:30 Uhr
Ich wollte nur, dass die einzelne Bestelltabelle in einem Modalfenster angezeigt wird, nicht die vollständige Bestellliste.
Diese WooCommerce-Funktion gibt die vollständigen Bestelldetails in HTML-Form zurück $order_id
Nett 🙂 Und ich nehme an, dass die verwendete Vorlage – order/order-details.php ist in einem Thema überschreibbar, falls die Struktur nicht das ist, was benötigt wird. +1
– William Patton
30. August 2016 um 13:59 Uhr
Ja, Sie können überschreiben order/order-details.php, order/order-details-item.php und order/order-details-customer.php Dateien nach Ihren Wünschen.
– Raunak Gupta
30. August 2016 um 14:32 Uhr
Abgesehen vom Überschreiben der ursprünglichen Vorlage, welche globalen Variablen sollte ich einschließen, um sie zu verwenden?
– Juri
31. August 2016 um 8:30 Uhr
Sie müssen keine globalen Variablen schreiben, da diese bereits in dieser Vorlage vorhanden sind. Sie müssen sie nur in Ihr aktives Theam kopieren und entsprechend anpassen. vorausgesetzt, Sie wissen, wer diese Vorlage überschreiben soll
– Raunak Gupta
31. August 2016 um 8:39 Uhr
Mir ist keine einzige Funktion bekannt, die alle Bestelldetails, die Sie benötigen, auf einmal abrufen kann, aber Sie können anrufen WC_Order Klasse, um zu bekommen, was Sie brauchen. Durch einige ähnliche Anrufmethoden erhalten Sie die Informationen, die Sie benötigen. Sie müssen wahrscheinlich mehr als nur die Anrufe tätigen get_items() Methode abhängig von den genauen Informationen, die Sie benötigen. Im Allgemeinen geben sie Objekte mit einer ähnlichen Struktur wie Post-Objekte zurück.
$order = new WC_Order($post->ID);
$_order = $order->get_items();
Ich kenne Woocommerce nicht, aber Ihre Frage scheint sehr vage zu sein. Versuchen Sie, mehr Details hinzuzufügen (vielleicht a https://jsfiddle.net/ ) und Sie erhalten möglicherweise mehr Antworten.
– Ruben Pirotte
26. August 2016 um 7:15 Uhr
Ich würde eine Geige machen, wenn es nur möglich wäre, WordPress darin zu laden 🙂 Ich werde versuchen, meinen Beitrag zu klären
– Juri
26. August 2016 um 11:30 Uhr
Wenn jemand das Bedürfnis nach einem Downvoting verspürt, fügen Sie zumindest eine Erklärung dafür hinzu
– Juri
5. Oktober 2016 um 8:18 Uhr
@Yuri Es scheint, dass Sie eine Sicherheitslücke auf Ihrer Website erstellt haben, wenn Sie diesen Code verwendet haben. Dein
functions.php
nur Schecksis_user_logged_in()
nicht, wenn der Benutzer diese Bestellung besitzt. Das bedeutet, dass jede angeforderte Bestell-ID angezeigt wird, solange der Benutzer angemeldet ist – einschließlich der Bestellungen anderer Benutzer. Blick auf den Code Es scheint keine anderen Berechtigungsprüfungen durchzuführen.– rtpHarry
11. Dezember 2019 um 11:20 Uhr
@Yuri auch, Sie müssen keine Aktion hinzufügen für
wp_ajax_nopriv_modal_order
weil dies für Ajax-Anfragen von nicht eingeloggten Benutzern gilt.– rtpHarry
11. Dezember 2019 um 11:21 Uhr