【问题标题】:Custom cron job doesn't scheduled in Wordpress自定义 cron 作业未在 Wordpress 中安排
【发布时间】:2021-06-03 14:54:33
【问题描述】:

我在这里和 Google 搜索结果中阅读了几个问题,但我无法解决问题。我有一个我想每天运行一次的函数,它将从外部源获取数据并将其存储在选项页面上。

add_action( 'wp', 'update_stock_market' );
add_action( 'get_stock_market_daily_data', 'get_stock_market_data', 1, 1 );

function update_stock_market() {
    if ( ! wp_next_scheduled( 'get_stock_market_daily_data' ) ) {
        wp_schedule_event( time(), 'daily', 'get_stock_market_daily_data', array($company) );
    }
}

function get_stock_market_data($company ) {
    //do something here to get $data;
    update_option( 'stock_market_data', $data); 
}

但是,无论发生什么,我都无法在cronoption-name 下的wp-options 表中找到预定的cron

【问题讨论】:

    标签: wordpress cron


    【解决方案1】:

    此代码在一个干净的 WordPress 实例上为我工作,而不是直接在数据库中查看您是否尝试过使用插件 WP Crontrol?或者,在启用调试的情况下,尝试向 update_stock_market 函数添加一个日志条目,以检查是否调用了 secudled 事件。

    add_action( 'wp', 'update_stock_market' );
    add_action( 'get_stock_market_daily_data', 'get_stock_market_data', 1, 1 );
    
    function update_stock_market() {
        error_log( 'triggered' );
        if ( ! wp_next_scheduled( 'get_stock_market_daily_data' ) ) {
            wp_schedule_event( time(), 'daily', 'get_stock_market_daily_data', array($company) );
        }
    }
    
    function get_stock_market_data($company ) {
        //do something here to get $data;
        update_option( 'stock_market_data', $data); 
    }
    

    【讨论】:

    • 好主意。我使它与调试一起工作。还有另一个错误使那部分代码永远无法到达。但是,我按照您的建议尝试了 WP Control,它显示该事件被安排了两次。每次我刷新页面时,都会添加另一个事件。有什么想法吗?
    • 由于 update_stock_market 函数中未定义变量 $company,我无法具体说明原因,但如果您设置或删除此变量,则只会创建一个预定事件。
    • ^^ 因为 wp_next_scheduled 辅助参数是一个数组,其中包含要传递给钩子回调函数的每个单独参数。虽然没有传递给回调,但这些参数用于唯一标识事件
    • 因此,如果您想为每个公司创建一个预定事件,您可以将其作为次要事件传递,为每个公司创建一个独特的事件。更多信息在这里:developer.wordpress.org/reference/functions/wp_next_scheduled
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2014-11-26
    • 2020-03-16
    • 2015-06-23
    相关资源
    最近更新 更多