WordPress $ _POST在admin-post.php请求中为空

时间:2018-08-30 20:22:01

标签: php wordpress angular angular6

我使用/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数据。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要获取请求的内容,然后使用类似以下内容的json解码:

$data = json_decode(file_get_contents('php://input'));