Support » WooCommerce » Zugriff auf WooCommerce-Bestellungen über externe Seite mittels PHP

  • Gelöst stadtsoldat

    (@stadtsoldat)


    Hallo seid gegrüßt,

    für ein Projekt müsste ich von einer externen Seite (andere Domain als die WooCommerce-Installation) auf die Bestellungen zugreifen.

    Das heißt, auf der externen Seite liegt eine PHP-Seite, die irgendwie auf die WooCommerce-Datenbank kommen müsste.

    Geht sowas? Wenn ja, wie? Wo kann ich Dokus etc… finden?

    LG!

    Soldat.

Ansicht von 11 Antworten - 1 bis 11 (von insgesamt 11)
  • sssssssssssssssssssssssssssssiiiiiiiiiiicherlich geht das!
    There’s an app..uhm..API for that!
    https://docs.woocommerce.com/document/woocommerce-rest-api/
    https://woocommerce.github.io/woocommerce-rest-api-docs/#introduction

    WooCommerce bringt eine Schnittstelle mit – eine REST API!
    Damit kann man mit einer WooCommerce Instanz kommunizieren.

    Gibt auch Extensions, zb
    https://docs.woocommerce.com/document/woocommerce-api-manager/

    Natürlich gibts noch die gute alte WordPress-REST-API. Man kann sich also auch selbst mit Code die richtige Schnittstelle basteln!

    Thread-Ersteller stadtsoldat

    (@stadtsoldat)

    Perfekt. Danke. Ich wollte nur vermeiden, dass spätere Nutzer, für die das Projekt gemacht werden soll, nicht allzuviel im Code herum hacken müssen. Das mit der API scheint mir da eine gute Lösung zu sein.

    LG!

    Die Rest-API is ja generell super, eine Einarbeitung kann nie schaden. Oft wächst ein Projekt und mit JSON-APIs kann man viel machen.
    Super, wenns geholfen hat!

    Thread-Ersteller stadtsoldat

    (@stadtsoldat)

    Ja, die Links und die Tutorials helfen auf alle Fälle sehr gut weiter.

    Vielleicht könnte ich noch einen Tipp zur Einrichtung bekommen. Und zwar: Bei dem Projekt geht es darum, dass sich mein selbst erstelltes PHP-Projekt zu einem bereits aufgesetztem WooCommerce verbindet.

    Das heißt, der Endnutzer sollte irgend ein Plugin xy von mir installieren oder eine API einrichten, so dass meine PHP-Seiten anschließend auf die WooCommerce-Bestellungen Zugriff haben. Eventuell nur ein kleiner Tipp, wo ich ansetzen und anfangen soll. Danke!

    LG!

    • Diese Antwort wurde geändert vor 4 Monaten, 1 Woche von stadtsoldat.

    PUH, ok, bin mir nicht sicher, ob das die Grenzen eines generellen Support-Forums nicht sprengt 🙂

    So schwer ist das ja eh nicht. Kurz umrissen:

    Dein Server muss sich zur WooCommerce Instanz verbinden, also brauchst du Authentifizierung. Da gibt es mehrere Möglichkeiten, in meinem Link oben steht dazu eh etwas.

    Wenn die Authentifizierung funktioniert, kannst du ganz einfach API-Calls absetzen und dir die Daten holen.

    Wahrscheinlich willst du das nicht bei jedem Seitenaufruf machen, also solltest du Daten cachen.

    Oder vl sogar per CRON regelmäßig abholen.

    Alles Weitere obliegt deiner Fantasie!

    • Diese Antwort wurde geändert vor 4 Monaten, 1 Woche von souri.
    Thread-Ersteller stadtsoldat

    (@stadtsoldat)

    Gut, danke für den Einstieg. Ich code und bastele mal und werde berichten 😉

    LG!

    Viel Spaß und Erfolg!
    Du könntest deine Ergebnisse bzw Erkenntnisse ja kurz mitteilen – in Form eines eigenen Blogeintrages, den du hier verlinkst, oder eines Kommentars o.ä.
    So im Sinne „Helfe ich dir, hilfst du mir“. In dem Fall halt anderen Interessierten. Um den open source Gedanken und den WordPress-Way ein bisserl in die Welt hinauszutragen. No offense! 🙂

    • Diese Antwort wurde geändert vor 4 Monaten, 1 Woche von souri.

    @stadtsoldat
    Es wäre nett, wenn du den Thread bei Gelegenheit noch als „gelöst“ markierst.

    Thread-Ersteller stadtsoldat

    (@stadtsoldat)

    Sehr verehrtes Publikum 😀

    Es läuft. Die Ausgabe ist zwar noch sehr chaotisch und unsortiert, aber der Zugriff funktioniert schon mal grundlegend.

    Hier meine Schritte:

    1. Man gehe auf WordPress, WooCommerce, Einstellungen, Erweitert, Rest-API

    2. Ein Klick auf Schlüssel hinzufügen

    3. Beschreibung eintragen, den Benutzer wählen und die Berechtigungen auf lesen/schreiben setzen

    4. Consumer Key und Consumer Secret notieren

    Auf der PHP-Seite dann folgendes hincoden:

    <?php
    
        function apiTransfer($method, $url, $data = false)
        {
            $curl = curl_init();
    
            switch ($method)
            {
                case "POST":
    
                    curl_setopt($curl, CURLOPT_POST, 1);
                    if ($data) curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
                    break;
    
                case "PUT":
    
                    curl_setopt($curl, CURLOPT_PUT, 1);
                    break;
    
                default:
    
                    if ($data) $url = sprintf("%s?%s", $url, http_build_query($data));
            }
    
            // Optional Authentication:
            curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($curl, CURLOPT_USERPWD, "consumerkey:consumersecret");
    
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    
            $result = curl_exec($curl);
    
            curl_close($curl);
    
            return $result;
        }
    
        $result = apiTransfer("GET", "https://domain.de/wp-json/wc/v2/orders");
    
        echo $result;
    ?>
    • Diese Antwort wurde geändert vor 4 Monaten, 1 Woche von stadtsoldat.
    • Diese Antwort wurde geändert vor 4 Monaten, 1 Woche von stadtsoldat.

    NIIIIIIIIICE!!!!!
    Ich würd an deiner Stelle nicht direkt CURLING betreiben.
    Versuchs mit https://developer.wordpress.org/reference/functions/wp_remote_request/
    Warum? Weil es die Funktion im Hintergrund verwendet, die bei dir am Server aktiv ist. Es könnte sein, dass CURL bei dir am Server nicht aktiv ist, dann greift https://developer.wordpress.org/reference/functions/wp_remote_request/ auf was Anderes zurück!

    Thread-Ersteller stadtsoldat

    (@stadtsoldat)

    Okay, baue ich mal um bei Gelegenheit. Ich bin ja schon froh dass ich es mit meinen verstaubten PHP-Kenntnissen überhaupt mal zum Laufen gebracht habe 😉

    Ersetze ich dann
    apiTransfer($method, $url, $data = false)

    mit
    wp_remote_request( string $url, array $args = array() )

    ?

    LG.

Ansicht von 11 Antworten - 1 bis 11 (von insgesamt 11)