大家早上好。正如标题所说,我正试图找到一种方法,每周运行一个wordpress查询,用本周的建议帖子更新我网站的一个部分。
环顾四周,我发现了wp_cron
功能,它似乎是我想要的东西,因为我无法在服务器上设置cron作业。问题是我没能让它发挥作用。我在functions.php中创建了这个try函数
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,所以可能我错过了一些东西,但我希望每次刷新页面时都能得到相同的时间((,因为该函数应该每天启动一次,但每次刷新时我都有当前的时间戳。
我想知道我是否正确使用了wp_cron函数,在这种情况下使用它是否正确,或者有更好的方法来实现这个结果。
谢谢你的帮助,祝你今天愉快。
要每周执行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才能对其进行重新调度。
希望这有帮助:(