Plugin nur bei der ersten Veröffentlichung durchlaufen?

  • hi, ich schreibe ein plugin, das nur dann durchlaufen werden soll, wenn ein artikel das erste mal veröffentlicht wird. ich benutze

    Code
    add_action('publish_post', 'meine_funktion')

    das hat ja aber zur folge, dass das plugin auch dann aufgerufen wird, wenn der artikel bereits veröffentlicht wurde und dann noch einmal editiert wird. wie kann ich das umgehen?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • solange keine antwort kommt, mach ich mal noch ein bisschen alleine weiter ... :mrgreen:

    das plugin sieht jetzt so aus:

    ich vergleiche also die aktuelle zeit mit dem zeitpunkt, zu dem der artikel veröffentlicht wurde. stimmen die beiden überein, ist davon auszugehen, dass der artikel gerade zum ersten mal veröffentlicht wurde und das plugin wird durchlaufen.

    es hat so bei mir auf jeden fall funktioniert, allerdings hab ich keine ahnung, wie fehleranfällig diese variante ist. (kann zb eine langsame skript-ausführung zu unterschiedlichen zeiten führen?) außerdem hat es nicht funktiort, als der veröffentlichungszeitpunkt in der zukunft lag.

    wenn also jemand eine bessere lösung hat - immer her damit!!! :)

    Einmal editiert, zuletzt von guest_182 (23. August 2009 um 08:50)

  • dann will ich mal noch ein drittes mal den alleinunterhalter geben:

    nach ausgiebigen tests durfte ich feststellen, dass der vergleich von post-zeitpunkt und aktueller uhrzeit problemlos funktioniert. weil sich aber die in wordpress eingestellte zeitzone von der systemzeit des servers unterscheiden kann, vergleiche ich nun die gmt-varianten.

    der vorteil des zeitvergleichs gegenüber anderen methoden, zu überprüfen, ob der artikel gerade zum ersten mal veröffentlicht wird, ist, dass der zeitvergleich unabhängig von der art und weise funktioniert, wie ein artikel gepostet wird. diese variante funktioniert also auch, wenn ein artikel per email, xml-rpc oder sonst wie veröffentlicht wird. bei vielen methoden, die ich gesehen habe, ist das nicht der fall - etwa bei der überprüfung von $_POST['...']-variablen, die eben nur dann vorhanden sind, wenn man aus dem admin-bereich heraus bloggt.

    einziges problem weiterhin: vorterminierte artikel (post_status = future) fallen durch diesen vergleich durch. deshalb verwende ich für sie nun "future_to_publish". und es funktioniert. :cool:

    weiterhin bin ich natürlich auf verbesserungsvorschläge oder alternative methoden gespannt. also immer her damit.

  • Was möchtest du eigentlich genau an deinem Beitrag das erste mal ändern?

    Ich bin selbst kein Profi aber wenn ich überprüfen möchte, ob ein Beitrag schonmal das erste mal durchloffen ist, durch deine Funktion, würde ich eine Spalte in der Datenbank dazu anlegen "Checked" oder so. Diese ist standardmäßig FALSE.

    Bei dem aufruf deiner Funktion kannst du dann einfach überprüfen ob dein Beitrag schon Checked ist, wenn nicht soll es deine Funktion ausführen, ansonsten überspringen...

    Jedoch ist es natürlich erstmal wichtig was du mit der Funktion erreichen willst, ob es vllt. nicht sinnvoll wäre VOR dem eintrag in der Datenbank den Inhalt schon zu editieren und ihn so in die Datenbank zu speichern ohne danach immer überprüfen zu müssen ob es schon geändert ist..

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!