0

私はこの問題を理解するのに苦労しています。基本的に、私はプラグインを書きました..ファイル構造は次のとおりです

-myplugin.php (init and includes myplugin-common.php )
-myplugin-admin.php (plugin menu item index and includes myplugin-part1.php and part2)
-myplugin-common.php
-myplugin-part1.php
-myplugin-part2.php

まだ有効になっていない場合にcronをアクティブにする機能があります..以下の例(これはmyplugin.php内にあります)

function myplugin_cron_activate() {

    if ( get_option( SCHEDULE_ENABLED ) !== false ) {
        if ( get_option(SCHEDULE_ENABLED) == 'true') {
            if (!wp_next_scheduled('wpo_cron_event2')) {

                $schedule_type = get_option(SCHEDULE_TYPE, 'weekly');

                wp_schedule_event(time(), $schedule_type, 'my_cron_event2');
                add_action('my_cron_event2', 'my_cron_action');

        }
        }
    }

*my_cron_action* は共通ファイルmyplugin-common.php内にあります。これは問題なく、とにかく動作します..

問題は、myplugin-part2.phpがスケジューラを有効または無効にする設定ページであることです。有効にすると、*myplugin_cron_activate()* 関数が呼び出されます。ただし、wordpress の cron 機能は有効になりません。しかし、管理者のプラグインのメイン リンクに移動すると、有効になります。

myplugin-part1.php と myplugin-part2.php の両方がmyplugin-admin.php内に含まれていることに注意してください。myplugin-admin.phpは 2 つのタブを保持し、それに応じてファイルのこれら 2 つの部分をロードします。

設定ページを送信したときにスケジューラがアクティブにならない理由がまだわかりません-はい、$ POSTで関数を呼び出しています。しかし、管理ページのメインリンクをクリックするとアクティブになります..(このため、次のスケジュール時間も表示できません)

4

1 に答える 1

0

週間スケジュールを追加する必要があります

function add_weekly_cron( $schedules ) {
        $schedules['weekly'] = array(
        'interval' => 604800,
        'display' => __('Once Weekly','beforeafter')
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'add_weekly_cron' ); 

また、間違った方法で wp-cron をトリガーしていると思います

add_action('my_action_hook','my_cron_function');
if( !wp_next_scheduled( 'my_cron function' ) ) {  
   wp_schedule_event( time(), 'weekly', 'my_action_hook' );  

Cron ビューを使用して WP-CRON をデバッグします :)

于 2013-11-03T14:43:02.353 に答える