在cron作业中使用rest_do_request()?

时间:2017-09-07 07:10:59

标签: wordpress wordpress-rest-api

我试图在wordpress中的cron作业中发出休息请求,但是如果我在wp_cron触发的函数中有rest_do_request()并且它没有完成这项工作。当执行强制的cron作业(使用调试插件)时,它已完全执行,但我在日志Undefined index: path in "../wp-content/mu-plugins/wpengine-common/plugin.php at line 2030"中看到错误。网站目前在WPEngine上托管,他们说这些问题并非来自他们,即使PHP通知来自他们的插件。

cron触发的函数:

//Sample rest_do_request() that creates a new post
function cron_rings_sync_catalog_bd895153() {

    $request = new WP_REST_Request('POST', '/wp/v2/posts');
    $request->set_param('title', 'Some Title');
    $request->set_param('content', 'Some Content for the new post');
    $response = rest_do_request($request);
}
//Hook to Custom Cron Job
add_action( 'rings_sync_catalog', 'cron_rings_sync_catalog_bd895153', 10, 0 );

目前,为了测试,此功能已添加到主题的functions.php文件中,请求已针对帖子进行,但我在带有路由'/wp/v2/rings'

的CPT(响铃)上使用它

我无法弄清楚为什么rest_do_request()在cron作业中使用时无效。

我能够记录cron事件发出的请求: {"data":{"code":"rest_cannot_create","message":"Sorry, you are not allowed to create posts as this user.","data":{"status":401}},"headers":[],"status":401}

1 个答案:

答案 0 :(得分:0)

我想到了这个问题,如果有人遇到它。 问题是WP_Cron没有授权发出POST请求。 作为快速修复,我在wp_set_current_user($admin_id);之前的函数中添加了$request = new WP_REST_Request('POST', '/wp/v2/posts');