每周运行wordpress查询

时间:2016-03-09 10:28:46

标签: php wordpress cron

大家早上好。正如标题所说我试图找到一种方法来每周运行一个wordpress查询来更新我的网站中的部分与本周的建议帖子。

环顾四周我找到了wp_cron功能,看起来我正在寻找的东西,因为我无法在服务器上设置cron作业。 问题是我无法使其发挥作用。 我在 functions.php

中创建了这个try-function
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函数,如果在这种情况下使用它是正确的,或者有更好的方法来实现这个结果。

感谢您的帮助,祝您度过愉快的一天。

1 个答案:

答案 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();
    }
}

第一个功能会创建一个新计划 - 因为您只有houlydailytwicedaily作为reccurance

然后设置调度程序。您检查是否有预定的活动!wp_next_scheduled,如果没有,则安排活动

wp_schedule_event( time(), 'every_week', 'my_cron_hook' );

如果您已经使用某个名称初始化了一个cron,那么要重新安排它,您需要wp_clear_scheduled_hook

希望这会有所帮助:)