1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

WooCommerce Online Ticketsystem läuft... Optionaler Hardticket Versand integrieren?

Dieses Thema im Forum "Onlineshop mit WordPress" wurde erstellt von Wordleo, 22. Februar 2018.

  1. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    Welche Zahlungsart hattest Du verwendet, Wordleo? Ist der evtl. gar nicht bis dahin gekommen, den Status auf Hardcopy zu setzen?
     
  2. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Hi - warte mal kurz. Ich hab ja überall gerade 0 Euro drin wegen Testzwecken. Da kommen dann keine Bezahlten zur Auswahl und es läuft direkt durch. Ich mach mal Beträge rein und spiel das durch.

    GLG
     
    #82 Wordleo, 26. Februar 2018
    Zuletzt bearbeitet: 26. Februar 2018
  3. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Hi

    also das ist interessant!

    Hab einmal eine Bestellung via Paypal abgewickelt. Danach springt der Status wieder direkt in "In Bearbeitung" rein.

    Hier ein Screencast... ;)

    Schönen Gruß

    Screencast
     
  4. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    Hmmm - hast Du noch eine Idee, woran das liegen könnte, mensmaximus? Kann ich einen Custom Status nicht zuweisen?
     
  5. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Ich hab das nun schon richtig verstanden. Du will einen extra Status anlegen für Hardcopy in dem dann die PDF's generiert werden - ja?

    Aber dann kommen die überschüßigen doch trotzdem weil soweit ich das sehe. "Zahlung ausstehen" und "In Bearbeitung" und "Completed" ja immer durchlaufen werden...
    - oder war das die Geschichte mit dem woohelper.php

    GLG
     
    #85 Wordleo, 26. Februar 2018
    Zuletzt bearbeitet: 26. Februar 2018
  6. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    P.S: Muss grad irgendwie an Gladiator denken.... ;)
     
  7. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    Richtig, Ich will jeder Bestellung, die Post-Versand erfordert, den Status Hardcopy geben und dann mit einem Hook für diesen Status die Funktion aufrufen.
     
  8. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Du machst Dir das Leben zu schwer:

    if ( true == $hardcopy_checkbox {
    do_action( 'dein_hook', $order );
    }
     
  9. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    Okay, mensmaximus hat eindeutig mehr Ahnung von woocommerce :razz:.

    Mach bei dem else mal das update_status wieder weg,

    Und dann setzt Du stattdessen zwischen die geschweiften Klammern:

    do_action('woocommerce_order_status_completed',$the_order);

    Ohne Leerzeichen zwischen h und e_ .
     
  10. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Bin grad am kochen. Melde mich später nochmal. Dann mit der vollständigen Idee. Lehnt Euch erst mal zurück. Pause.
     
  11. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0

    Hi - nun wird's richtig wild!

    1. Email "Bestelleingang"
    2. Email "Zahlungsbestätigung"
    3. Email "Bestellung fertiggestellt"?

    Status steht auf "In Bearbeitung" -> Kein PDF...

    GLG
     
  12. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Las es dir schmecken! Ich mach dann auch mal einen Spaziergang weil die Wolke auf der ihr schwebt muss ich mir wohl noch ertippen!
     
  13. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Ich habe verstanden, dass ein Kunde bei einer Bestellung auswählen können soll, dass er die Tickets per Post bekommt. Dafür muss er zahlen.

    Den Punkt hat Azrael teileweise umgesetzt, in dem er eine Checkbox eingebaut hat und die Gebühr im Checkout korrekt in das Bestellobjekt übergibt. Der Checkboxstatus selbst ist aber noch nicht als Order Meta gespeichert. Das muss noch passieren.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Jetzt kommt der Teil mit dem Ticketversand. Solange der Kunde im Checkout die Option für den Versand nicht auswählt, ändert sich nichts.

    Man muss sich also "nur" auf den Fall konzentrieren, wenn die Checkbox ausgewählt ist.

    Wenn das der Fall, ist soll die FooEvents Funktion für die PDF Erstellung ausgelöst werden, unabhängig vom Status der Bestellung. Gleichzeitig soll aber verhindert werden, dass FooEvents die Funktion ebenfalls ausführt wenn der Status 'completed' ist. An dieser Stelle müssen wir zwei Dinge beachten:

    1. Die Statusänderung geschieht an mehreren Stellen, wie z.B. bei der Rückmeldung von Zahlungsgateways und im Backend bei einer manuelle Änderung.
    2. Mehrere Statusänderungen können hintereinander passieren (on-hold, processing, completed oder on-hold, completed)

    Beide Punkte müssen Berücksichtigung finden. Die Statusänderung wird in der Methode status_transition() in der Klasse WC_Order statt. FooEvents hooked bereits zum frühest möglichen Zeitpunkt in dieser Methode ein: add_action('woocommerce_order_status_completed', array(&$this, 'process_order_tickets'), 10, 1);

    Zum Glück verwendet FooEvents die Priorität 10. Das ist zwar früher als der Standard 20, aber wir haben noch genug 'Luft' um vorher einzuhooken. Also hängen wir eine eigene Funktion ein, welche die FooEvents Funktion deaktiviert falls die Tickets versendet werden sollen:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wie die remove_action Syntax lauten muss, hängt davon ab wie die Klasse von FooEvents heißt und wie sie instanziiert wird. Da ich den Quellcode nicht kenne habe ich einfach mal 3 Beispiele aufgeführt. Die Methode muss natürlich nur einmal entfernt werden (nicht 3x)

    Jetzt fehlt noch die Funktion zum Ausführen der Methode beim Status processing falls die Tickets versendet werden sollen. Dazu machen wir nicht anderes als die Originalfunktion von FooEvents an anderer Stelle einzuhooken:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wie die add_action Syntax lauten muss, hängt davon ab wie die Klasse von FooEvents heißt und wie sie instanziiert wird. Da ich den Quellcode nicht kenne habe ich einfach mal 2 Beispiele aufgeführt. Die Methode muss natürlich nur einmal eingehängt werden (nicht 2x)

    Wenn das Plugin sauber geschrieben ist haben wir jetzt die Funktion erfolgreich umgehängt, falls der Ticketversand gewünscht wird.

    Der Quellcode ist nicht geprüft und dient nur der Veranschaulichung der Logik.
     
  14. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Ja Wahnsinn Maximus...

    Das werde ich mir jetzt mal in Ruhe durchdenken... WOW...

    GLG
     
  15. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    Danke Dir, mensmaximus. Echt klasse.
     
  16. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Ich schlage vor, dass Azrael sich das anschaut (wenn er noch Lust hat) und in seine Syntax einbaut (Checkboxname, Metaname, usw) sowie die Instanzierung der FooEvents Klasse prüft um die Methode porcess_order_tickets() korrekt zu behandeln (remove_action, add_action). Das ist ein wenig fummelig. Es ist ja auch gar nicht sicher gestellt, dass ich alles verstanden habe. Aber Azrael kann anhand meiner Logik seine Logik anpassen.
     
  17. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Ihr habt euch auf jeden Fall schon einmal ein paar Freitickets verdient... ;)
     
  18. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    So, neues Plugin. Lokal wirft das bei mir keinen Fehler, probier mal, ob das tut wie gewünscht.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  19. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Warum machst Du den Include? Und warum nicht den gesamten Code in einer Datei?
     
  20. Azrael_0815

    Azrael_0815 Well-Known Member

    Registriert seit:
    7. Juli 2015
    Beiträge:
    591
    Zustimmungen:
    35
    Weil ich dachte, der include sei notwendig, damit die Klassen gefunden werden. Bin noch nicht so lange in der OOP. Unnötig?
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden