WordPress cron作业并非自动运行。
关于插件:此插件将更新已发布帖子的时间。每两个小时,它会更新已发布帖子的时间。 示例:假设,插件已激活并且正在运行。
发布时间的当前时间是下午1:00。 现在,2个小时后,插件将开始工作。 当时间是下午3:00时,它将发布的帖子的更新时间更新为下午3:00
<?php
/**
*Plugin Name:Logicdigger
*Plugin URI: http://www.logicdigger.com
*Description: this plugin update post time on each 2 hours.
*Author: lakshman rajput
*Version: 1.0
*Author URI: http://www.fb.com/lxraj
**/
register_activation_hook(__FILE__, 'my_activation');
function my_activation() {
if (! wp_next_scheduled ( 'my_hourly_event1' )) {
wp_schedule_event(time(), '2hours', 'my_hourly_event1');
}
}
function my_cron_schedules($schedules){
if(!isset($schedules["2hours"])){
$schedules["2hours"] = array(
'interval' => 0,
'display' => __('Once every 5 minutes'));
}
if(!isset($schedules["30min"])){
$schedules["30min"] = array(
'interval' => 30*60,
'display' => __('Once every 30 minutes'));
}
return $schedules;
}
add_filter('cron_schedules','my_cron_schedules');
add_action('init', 'do_this_hourly');
function do_this_hourly() {
$postslist = get_posts();
if ( $postslist ) {
foreach ( $postslist as $post ) {
$mypost = array();
//$newdate = date('Y-m-d H:i:s', strtotime("+2 hours",$post->post_date));
$mypost['ID'] = $post->ID; // the post ID you want to update
//$mypost['post_date'] = date('Y-m-d H:i:s'); // uses 'Y-m-d H:i:s' format
wp_update_post($mypost);
}
}
register_deactivation_hook(__FILE__, 'my_deactivation');
function my_deactivation() {
wp_clear_scheduled_hook('my_hourly_event1');
}
答案 0 :(得分:0)
在激活方法上,您现在正在安排活动,而不是从现在起2小时。你可以使用这样的东西:
function my_activation() {
if (! wp_next_scheduled ( 'my_hourly_event1' )) {
wp_schedule_event(time() + 2 * HOUR_IN_SECONDS, '2hours', 'my_hourly_event1');
}
}
间隔未设置为每2小时:
if(!isset($schedules["2hours"])){
$schedules["2hours"] = array(
'interval' => 2*HOUR_IN_SECONDS,
'display' => __('Once every 2 hours'));
}
你也在init上挂了do_this_hourly函数。这意味着,您将在每个页面加载时调用此函数。这将使您的网站真的很慢。在执行cron调度时,需要将该函数挂钩到调度cron作业时定义的挂钩。你的钩子是'my_hourly_event1'。所以它应该是:
add_action( 'my_hourly_event1', 'do_this_hourly');
您可以在WordPress插件开发人员手册中阅读有关Cron的详细指南:https://developer.wordpress.org/plugins/cron/scheduling-wp-cron-events/