我使用/wp-admin/admin-post.php
作为端点来接收来自Angular应用程序的Ajax发布请求。这是在我的wordpress插件中注册端点的设置:
function _admin_post_myaction() {
// Just to see what's there
wp_send_json( array(
'$_POST' => $_POST,
'$_GET' => $_GET,
'$_REQUEST' => $_REQUEST
) );
}
add_action( 'admin_post_myaction', '_admin_post_myaction' );
add_action( 'admin_post_nopriv_myaction', '_admin_post_myaction' );
在Angular中,我正在使用HttpClient发送发帖请求:
this.http
.post(this.config.adminURL + '?action=order_ingredients', {
action: 'order_ingredients',
data: this.data
})
.subscribe({
next: value => {
console.log('Next', value);
},
error: err => {
console.error('Error', err);
},
complete: () => {
console.log('Complete');
}
});
我得到以下结果:
{action: "myaction", $_POST: [], $_REQUEST: {action: "myaction"}
看起来WordPress会在执行admin-post操作之前的某个时候删除POST数据。有什么想法吗?
答案 0 :(得分:0)
您需要获取请求的内容,然后使用类似以下内容的json解码:
$data = json_decode(file_get_contents('php://input'));