环顾四周我找到了wp_cron
功能,看起来我正在寻找的东西,因为我无法在服务器上设置cron作业。
问题是我无法使其发挥作用。
我在 functions.php
add_action( 'cron_hook', 'cron_exec' );
if( !wp_next_scheduled( 'cron_hook' ) ) {
wp_schedule_event( time(), 'daily', 'cron_hook' );
}
function cron_exec() {
echo time();
}
我在帖子页面中使用以下代码调用该操作:
do_action('cron_hook');
这是我第一次尝试wp_cron所以也许我错过了一些东西,但每次刷新页面时我都希望得到相同的 time()因为函数应该每天被触发一次,但是我最终在每次刷新时都有当前的时间戳。
我想知道我是否正确使用了wp_cron函数,如果在这种情况下使用它是正确的,或者有更好的方法来实现这个结果。
感谢您的帮助,祝您度过愉快的一天。
答案 0 :(得分:0)
要每周执行一次cron,你需要这样的东西:
function custom_time_cron( $schedules ) {
$schedules['every_week'] = array(
'interval' => 604800, //604800 seconds in 1 week
'display' => esc_html__( 'Every Week', 'textdomain' )
);
return $schedules;
}
add_filter( 'cron_schedules', 'custom_time_cron' );
add_action( 'my_cron_hook', 'my_cron_function' );
if (!function_exists('mytheme_my_activation')) {
function mytheme_my_activation() {
if (!wp_next_scheduled('my_cron_hook')) {
wp_schedule_event( time(), 'every_week', 'my_cron_hook' );
}
}
}
add_action('wp', 'mytheme_my_activation');
if (!function_exists('my_cron_function')) {
function my_cron_function() {
echo time();
}
}
第一个功能会创建一个新计划 - 因为您只有houly
,daily
和twicedaily
作为reccurance。
然后设置调度程序。您检查是否有预定的活动!wp_next_scheduled
,如果没有,则安排活动
wp_schedule_event( time(), 'every_week', 'my_cron_hook' );
如果您已经使用某个名称初始化了一个cron,那么要重新安排它,您需要wp_clear_scheduled_hook。
希望这会有所帮助:)