php 如何在cron作业函数中传递参数

8xiog9wr  于 2023-06-04  发布在  PHP
关注(0)|答案(1)|浏览(244)

我在WordPress的PHP和cron完全新。所以,我有个任务。我需要从表单中获取数据并将其放入cron函数中。
这是我的代码。我创建了自定义插件页面在WordPress的管理面板,并尝试运行此代码。实际上,如果我输入文章ID而不是变量$post_id,代码就可以工作;

function cron_add_one_minute( $schedules ) {
    $schedules['one_minute'] = array(
        'interval' => 60,
        'display'  => 'One in minute'
    );
    return $schedules;
};
    if(!empty($_POST) && ($_POST['btnaup']) && !wp_next_scheduled( 'update_post' )) {
        wp_schedule_event( time(), 'one_minute', 'update_post');
    }

    if(isset( $_POST['btnaup'])) {
        $post_id = $_POST['id'];
        $b = $_POST['days'];
    }

add_action( 'update_post', 'update_my_post', 10, 1);

function update_my_post( $post_id ){
        $time = current_time('mysql');
 
        wp_update_post( array (
            'ID'            => $post_id, 
            'post_date'     => $time,
            'post_date_gmt' => get_gmt_from_date( $time ),
            'post_modified' => $time,
            'post_modified_gmt' => get_gmt_from_date($time),
        )  );
}
bejyjqdl

bejyjqdl1#

根据wp_schedule_eventdocs,第四个参数(您当前没有使用)是$args
数组,包含要传递给挂接的回调函数的参数。数组中的每个值都作为单独的参数传递给回调。
数组键将被忽略。
默认值:array()
这意味着您应该能够用途:

if (!empty($_POST) && ($_POST['btnaup']) && !wp_next_scheduled('update_post')) {
    $data = [
        $_POST['id'],
    ];

    wp_schedule_event(time(), 'one_minute', 'update_post', $data);
}

你的update_my_post函数应该可以正常工作了。

相关问题