Support » Allgemeine Fragen » Eigenes Plugin soll eine Funktion alle x Minuten ausführen

  • Gelöst christian712

    (@christian712)


    Hallo zusammen,
    ich programmiere gerade an einem Plugin, welches unter anderem auch überprüfen soll, ob ein bestimmtes Datum bereits überschritten ist und soll dann eine Rolle löschen.

    Meine Frage: Wie kann ich dafür sorgen, dass eine Funktion meines Plugins permanent unabhänig vom aktuellen User wiederholt wird und überprüft wird ob irgendein ein Benutzer eine Rolle hat, die er nach Datum eigentlich nicht mehr haben dürfte.

    Würde mich über eine Beantwortung der Frage sehr freuen!

    Viele Grüße
    Christian

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Dafür bieten sich Cron-Jobs an.

    Zur Info: das hier ist ein Forum für WordPress-Anwender und nicht für Programmierer 😉

    Thread-Starter christian712

    (@christian712)

    @bscu
    Vielen Dank für die Antwort! Wo finde ich denn das Programmiererforum?

    Thread-Starter christian712

    (@christian712)

    @bscu Sehr gut! Vielen Dank für die Hilfe! Das war das Stichwort, das ich gesucht habe.

    Unter Linux kannst du mit so genannten Cron-Jobs festlegen, dass Skripte zu bestimmten Zeiten ausgeführt werden sollen. Je nach Umfang des Skripts kann das aber die CPU des Computers recht stark auslasten, weshalb viele Webhoster ihren Kunden in preiswerten Hosting-Tarifen nicht die Einrichtung von Cron-Jobs erlauben.
    Damit WordPress selbst bei billigen Hosting-Tarifen zeitgesteuert Aufgaben wie z.B. die Veröffentlichung eines Beitrags zu einer bestimmten Zeit („am 1.Juli um 12:00 Uhr“) ausführen kann, verwendet WordPress eine andere Technik, die als „Pseudo-Cron“ bekannt ist: Sobald jemand die Webseiten abruft wird kurz nachgeschaut, ob in der Datenbank ein Eintrag vorhanden ist, dass zu dieser Zeit eine Aufgabe bereits hätte erledigt werden sollen. Die Aufgabe wird dann unmittelbar nachgeholt. Auf diese Weise sind die Webseitenbesucher also die Zeitgeber zur Ausführung von Skripten. Nachteil ist, dass die Skripte immer erst nachträglich ausgeführt werden – zumindest der erste Besucher sieht zu dann z.B. den zu dieser Zeit geplanten Beitrag noch nicht.

    Das Thema ist in diesem Beitrag recht ausführlich behandelt worden: So erstellst und änderst du einen WordPress Cron-Job

    Mit dem Code solltest du zumindest die regelmäßige Überprüfung hinbekommen. Der Abgleich des Datums, zu dem die Benutzerrechte verfallen sollen, ist nicht viel mehr als eine Datums-Operation in PHP. Zusätzlich brauchst du dann noch eine Abfrage mit der WordPress-Funktion user_can(), ob der Benutzer noch eine bestimmte Benutzerrolle hat und falls ja, entziehst du die alte Rolle und weist eine neue Rolle zu. Das wird in diesem Beitrag erklärt: https://wordpress.stackexchange.com/a/4727

    Das Plugin sollte so programmiert werden, dass die laufenden Abfragen ob ein Benutzer noch eine Bestimmte Rolle hat nach einem vorgegebenen Datum nicht mehr ausgeführt wird, um die Performance der Website nicht unnötig zu belasten.

    Nachtrag: ¯\_(ツ)_/¯ … aber schön, dass ihr das so schnell geklärt habt, während ich noch geschrieben habe. 😛

    @pixolin

    aber schön, dass ihr das so schnell geklärt habt, während ich noch geschrieben habe.

    Das kommt davon, wenn man immer Romane schreibt 😀 😀 😀

    @bscu:
    Dafür habe ich aber mal wieder was für mich über die Antwort von @pixolin mitgenommen 😉Danke @pixolin

    Och jo, da nicht für, nich‘? 😉

    Thread-Starter christian712

    (@christian712)

    Vielen Dank für eure Mühe.

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Das Thema „Eigenes Plugin soll eine Funktion alle x Minuten ausführen“ ist für neue Antworten geschlossen.