Cronjob für Plugin erstellen?

  • Hallo liebe WP Gemeinde.

    Bin total neu unterwegs mit WP, es macht Spass und ist cool.
    Hab gerade ein Plugin erstellt welches auch einwandfrei funktioniert, nur jetzt kommt es.....

    Wie kann man einen Cronjob für ein Plugin erstellen?
    Ich möchte gerne ein Plugin per Shortcode mit bestimmten Parametern als Cronjob starten.
    Einmal als normaler Wordpress-Cronjob und oder als real Cronjob.
    Geht das irgendwie?

    Danke

    Einmal editiert, zuletzt von orangenetworxs (26. Januar 2014 um 15:25)

    • 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

  • Hallo,
    ja denke schon das das geht. Unterstüzt dein Hosting-Paket richtige Cronjobs ?
    Wäre es nicht sinnvoller per Cronjob direkt eine PHP-Dateien anzusprechen, welche die gewünschten Funktion ausführen. Ein Plugin wäre da denke ich unnötig. Da müsstest du ja noch eine extra PHP-Datei haben, die das Plugin in der Datenbank aktiviert und wieder deaktiviert.

    Also in deinem Shortcode könntest du mit dem Befehl <? exec("crontab crontab.txt"); ?> den Crontab laden, welcher dann eine PHP-Datei lädt, die die Funktionen deines Plugins ausführt, ohne das du dazu ein Plugin brauchst.

    Wordpress-Cronjobs sind abhängig von Seitenaufrufen.
    Hier noch zwei links:
    http://bueltge.de/wordpress-cron-nutzen/1000/
    http://www.variomedia.de/faq/Wie-richte…-ein/article/86

    MfG

  • Hoi g2h: im Grunde hast Du ja recht.
    Aber dazu muss ich dann die php Datei ins root legen oder?
    Kann man dies nicht irgendwie über die wp-cron.php machen, damit kann nicht jeder die php Datei ausführen.
    Man kann ja dann die wp-cron.php per richtigen cronjob aufrufen oder?

    Thx und Gruss

  • Ich glaube nicht das es was bringt die wp-cron.php einfach so auszuführen, da sind ja nur die Funktionen drinnen, die du brauchst um einen WP-Cronjob zu erstellen.
    Was genau willst du denn machen mit dem Cronjob, vielleicht reichen ja die Funktionen aus der wp-cron.php, wenn das ganze durch einen Besucher deiner Seite aufgerufen werden soll. Dann brauchst du ja nur die entsprechende funktion in deinem Shortcode aufzurufen ( http://codex.wordpress.org/Function_Refer…_schedule_event ).

    Einmal editiert, zuletzt von g3h (27. Januar 2014 um 10:18)

  • Also es geht darum das die Screenshots, welche ich mit Hilfe eines externen Dienstes automatisch erstelle, in meinem "WebLink" Bereich
    einmal am Tag erneuert werden oder überhaupt erstellt werden.
    Also ist es am besten wenn ich wohl eine seperate Datei erstelle, wo dann alle Links einmal durchlaufen werden. Wenn Cronjobs auf der Konsolenebene gemacht werden, was passiert dann aber mit der Anzeige? Ich weiss Blöde Frage....

    Gruss andreas

  • okay das hört sich gut an,
    nur eine Frage wie geht das?

    Ja ich meine nicht in der Datei sondern das WP mitbekommt das es ein Sicherheitstoken ist oder
    geht das automatisch mit dem ?ichbineinsicherheitstoken <-- klar nur ein Beispiel


    Den Tooken kann man doch bestimmt automatisch erstellen und dann einfach in eine seperaten function kontrollieren oder?


    Gruss und danke

  • Das mit dem Token ist mir auch nicht ganz klar, aber du kannst beim Aufruf von Cronjobs Variablen mitgeben, von denen du eine als Bedingung benutzten kannst, damit die PHP Datei überhaupt ausgeführt wird und so nicht von jedem ausgeführt werden kann. Über die Konsole sollte das so gehen:

    Code
    * * * * * php /my/directory/file.php "some key" "some other value"

    Im Skript selbst kannst du dann mit $argv[1] ( = "some key") und $argv[2] (= "some other value") auf die mitgegebenen Argumente zugreifen.
    Und dann natürlich den Key aus $argv[1] in einer if-Bedingung benutzen, um bei Übereinstimmung mit dem in PHP-Datei festgelegten Key, das Script zu starten.

    Wie sicher das ist weiß ich aber nicht, vielleicht ist der key so auch leicht abzugreifen.
    Es gibt noch die möglichkeit mit -H Argumente zu verbergen, vielleicht ist das besser.
    Aber alles nur Vermutungen...

    Hier sind die weiteren Befehle erklärt http://www.php.net/manual/de/feat…ine.options.php

    Es gibt auch noch die möglichkeit die Scripte in einen Ordner zu legen und per .htaccess zu schützen, so wie es hier beschrieben wird: https://stackoverflow.com/questions/1311…om-remote-users

    Einmal editiert, zuletzt von g3h (29. Januar 2014 um 23:06)


  • Den Tooken kann man doch bestimmt automatisch erstellen und dann einfach in eine seperaten function kontrollieren oder?

    Ich dachte du schreibst das Plugin..

    ein Tocken erzeugt man mit rand() in php

    zum Beispiel

    Zitat

    $sTocken = md5(uniqid(rand(), true));

    wie du diesen verwaltest ist dir überlassen. Du kannst auch einen festen Wert dir selber einfallen lassen und nur prüfen, ob der Job schon einmal in der gewünschten Zeit ausgeführt wurde.

    Und eine $_GET- Variable ist in einem PHP Script *immer* vorhanden.

    Bei Wordpress ist dies etwas komplizierter

    http://codex.wordpress.org/Custom_Queries

    Zitat


    To continue with the geo-tagging plugin from the last example, let's assume we want the plugin to enable custom permalinks of the form http://www.example.com/blog?geostate=oregon to tell WordPress to find posts whose state matches "oregon" and display them.

    PHP
    add_filter('query_vars', 'geotag_queryvars' );
    
    
    function geotag_queryvars( $qvars )
    {
      $qvars[] = 'geostate';
      return $qvars;
    }

    Viel Erfolg beim Basteln

    Ralf

    Mit offenen Augen träumen

Jetzt mitmachen!

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