我试图在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'
我无法弄清楚为什么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}
答案 0 :(得分:0)
我想到了这个问题,如果有人遇到它。
问题是WP_Cron没有授权发出POST请求。
作为快速修复,我在wp_set_current_user($admin_id);
之前的函数中添加了$request = new WP_REST_Request('POST', '/wp/v2/posts');
。