WP_Schedule_Event不接受参数

时间:2014-03-07 作者:lonerunner

我试着每小时安排一次活动,但没用。为什么,我不明白。

这里有一个我用来安排活动的函数。

add_action( \'scheduled_update_feeds\', \'update_feeds\', 10, 2 );

function scheduled_activation() {
    wp_schedule_event( time(), \'everyhour\', \'scheduled_update_feeds\', array( 0, \'everyhour\' ) );
}
register_activation_hook( __FILE__, \'scheduled_activation\' );
根据我的理解,这应该在插件激活时激活,并根据我的设置通过时间表事件。

当我使用它时without array args it works, 但我需要使用args将我的预定函数传递给它们。

这就是功能

function update_feeds($ids = false, $timing = false) {
    do something
}
当我像这样使用它时,它就工作了。

wp_schedule_event( time(), \'everyhour\', \'scheduled_update_feeds\' );
即使我在update\\u feed函数中不使用args,它也不会工作。奇怪的是,当我使用单一时间表时,它是有效的。

像这样

wp_schedule_single_event( time() + 10, \'scheduled_update_feeds\', array($ids) );
所以我不明白为什么它不起作用。

我在预定的列表中定义了“everyhour”。

add_filter( \'cron_schedules\', \'my_schedule\' ); 

$schedules[\'everyhour\'] = array(
    \'interval\' => 60,
    \'display\' => __( \'Every hour\', \'easy-video-grabber\' )
);
我用Cron Schedules插件检查了它的存在性,并且该计划存在。

3 个回复
SO网友:Douglas.Sesar

这并不能解决您的问题,但它可能会引导您朝着正确的方向解决问题。我建议您查看此插件,以帮助您了解发生了什么:

WP Cron Control

它可以快速查看整个站点中计划的cron作业。我最近用它来解决一个问题,当预定的电子邮件没有发送出去时。

SO网友:Vee

以过于简单的方式。注册文件管理器,嵌入操作(&a);使用它。例如:

注册事件:

// Create new cron job filter
add_filter( \'cron_schedules\', \'cron_add_five_minute\' );
function cron_add_five_minute( $schedules ) {
  // Adds once weekly to the existing schedules.
  $schedules[\'five_minute\'] = array(
      \'interval\' => 300,
      \'display\' => __( \'Five Minute\' )
  );
  return $schedules;
}
执行功能:

add_action( \'wpfex_five_minute_event\', \'wpfex_do_this_five_minute\' );

/**
 * On the scheduled action hook, run a function.
 */
function wpfex_do_this_five_minute() {
    // Execute file every five minutes      
    // Do what ever you want to do
}
*请注意,wp cron作业与通常的linux cron作业不同。Wordpress在用户访问网站时内部运行线程。若一天内并没有点击网站,那个么就并没有执行cron作业,因为cron作业线程并没有运行。

有关cron作业如何在WP中工作的更多信息,请查看quick reference guide

谢谢

SO网友:Privateer

我以前有过这个问题。现在发生的事情(从外观上看)是,您正在设置要调度的动作挂钩,但没有利用它。

e、 g。

function update_feeds($ids = false, $timing = false) {
   do something
}
wp_schedule_event( time(), \'everyhour\', \'scheduled_update_feeds\' );
除此之外,您还需要:

add_action(\'scheduled_update_feeds\', \'update_feeds\', 10, 2);
wp\\U schedule\\u event设置要运行的操作,因此除了要执行操作的函数外,还需要在指定的操作标记上添加要执行的操作。

您的wp\\u schedule\\u事件告诉wordpress定期对计划的\\u update\\u提要执行操作您正在运行的函数包含要执行的处理您需要对计划的\\u update\\u提要使用add\\u操作来执行您的功能我还建议在添加之前检查它是否存在:

$next_run = wp_next_scheduled(\'scheduled_update_feeds\');
if ( $next_run ) {
    wp_unschedule_event( $next_run, \'scheduled_update_feeds\');
}
$first_run = time();
$result = wp_schedule_event( $first_run, \'everyhour\', \'scheduled_update_feeds\');
最后,我建议使用较少的泛型名称,尤其是对于处理函数。可能有很多人会创建update\\u feeds函数。

无论如何,希望这能有所帮助。

结束