WordPress-Cronjob alle 3 Minuten

Lesezeit: 3 Minuten

Es gibt viele Beiträge zu Stackoverflow mit diesem Thema, aber (ich weiß nicht warum) nichts wird für mich funktionieren.

Was ich habe

function isa_add_every_three_minutes( $schedules ) {

    $schedules['every_three_minutes'] = array(
            'interval'  => 180,
            'display'   => __( 'Every 3 Minutes', 'textdomain' )
    );

    return $schedules;
}
add_filter( 'cron_schedules', 'isa_add_every_three_minutes' );


function every_three_minutes_event_func() 
{
    // do something
}

wp_schedule_event( time(), 'every_three_minutes', 'every_three_minutes_event_func' );

Irgendwelche Ideen, was ich falsch mache?

Sie müssen verwenden add_action() um Ihre Funktion mit dem geplanten Ereignis zu verbinden.

add_action( 'isa_add_every_three_minutes', 'every_three_minutes_event_func' );

Hier ist der vollständige Code.

// Add a new interval of 180 seconds
// See http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
add_filter( 'cron_schedules', 'isa_add_every_three_minutes' );
function isa_add_every_three_minutes( $schedules ) {
    $schedules['every_three_minutes'] = array(
            'interval'  => 180,
            'display'   => __( 'Every 3 Minutes', 'textdomain' )
    );
    return $schedules;
}

// Schedule an action if it's not already scheduled
if ( ! wp_next_scheduled( 'isa_add_every_three_minutes' ) ) {
    wp_schedule_event( time(), 'every_three_minutes', 'isa_add_every_three_minutes' );
}

// Hook into that action that'll fire every three minutes
add_action( 'isa_add_every_three_minutes', 'every_three_minutes_event_func' );
function every_three_minutes_event_func() {
    // do something
}
?>

anscheinend hast du vergessen den Befehl add_action() zu verwenden

Siehe dieses Beispiel: http://wpguru.co.uk/2014/01/how-to-create-a-cron-job-in-wordpress-teach-your-plugin-to-do-something-automatically/

Zunächst ist es wichtig, wo sich dieser Code befindet, ist er in Ihrer functions.php für Ihr Thema? Oder ist es ein benutzerdefiniertes Plugin, das Sie entwickeln?

Meiner Erfahrung nach ist es einfacher, Cron über ein benutzerdefiniertes Plugin zu debuggen und zu aktivieren, indem Aktivierungs-Hooks zum Aktivieren und Deaktivieren von Ereignissen verwendet werden. Ich hatte zuvor Schwierigkeiten, Cron-Ereignisse über Funktionen von PHP zu aktivieren, ich bevorzuge es, diese Ereignisse über benutzerdefinierte Plugins zu aktivieren.

Ich würde mit einer Plugin-Struktur wie dieser beginnen:

  • /my-cron-plugin
  • /my-cron-plugin/index.php
  • /mein-cron-plugin/mein-cron-plugin.php

Inhalt der index.php:

<?php // silence is golden

Inhalt von my-cron-plugin.php:

<?php

/**
 * Plugin name: My Custom Cron Plugin
 * Description: Simple WP cron plugin boilerplate.
 * Author: Your name
 * Version: 0.1
 */

// Security reasons...
if( !function_exists( 'add_action' ) ){
    die('...');
}

// The activation hook
function isa_activation(){
    if( !wp_next_scheduled( 'isa_add_every_three_minutes_event' ) ){
        wp_schedule_event( time(), 'every_three_minutes', 'isa_add_every_three_minutes_event' );
    }
}

register_activation_hook(   __FILE__, 'isa_activation' );

// The deactivation hook
function isa_deactivation(){
    if( wp_next_scheduled( 'isa_add_every_three_minutes_event' ) ){
        wp_clear_scheduled_hook( 'isa_add_every_three_minutes_event' );
    }
}

register_deactivation_hook( __FILE__, 'isa_deactivation' );


// The schedule filter hook
function isa_add_every_three_minutes( $schedules ) {
    $schedules['every_three_minutes'] = array(
            'interval'  => 180,
            'display'   => __( 'Every 3 Minutes', 'textdomain' )
    );
    return $schedules;
}

add_filter( 'cron_schedules', 'isa_add_every_three_minutes' );


// The WP Cron event callback function
function isa_every_three_minutes_event_func() {
    // do something
}

add_action( 'isa_add_every_three_minutes_event', 'isa_every_three_minutes_event_func' );

Nachdem Sie dieses Plugin eingerichtet haben, sollte das Ereignis bei der Plugin-Aktivierung aktiviert werden. Um zu testen, ob es funktioniert, verwenden Sie dieses Plugin: https://wordpress.org/plugins/wp-crontrol/

Eine weitere gute Ressource, um zu verstehen, wie WP Cron funktioniert, ist: https://developer.wordpress.org/plugins/cron/

1405900cookie-checkWordPress-Cronjob alle 3 Minuten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy