如何在可湿性粉剂中接收HTTP POST?

时间:2017-01-22 作者:James

如何在Wordpress中侦听和接收第三方HTTP帖子,以便在Wordpress中处理帖子中的数据?

不是用代码寻找答案,而是Wordpress接收HTTP帖子的方法。

4 个回复
最合适的回答,由SO网友:kirillrocks 整理而成

容易的您有两种选择可以这样做。

最简单但不太安全的方法是在WordPress的根文件夹中创建一个全新的PHP文件。假设我们会叫它get_post.php 并向其添加WordPress功能。

像这样:

<?php 
    require_once(\'wp-load.php\'); // add wordpress functionality
    $post = $_POST;

    if ( $something ) // security check
    update_post_meta( $post[\'post_id\'], \'post_data\', $post );
?>
API链接将是yourdomain.com/get_posts.php

另一个选项是在模板目录中创建一个全新的页面模板。并在WordPress仪表板中使用该模板创建页面。

<?php 
    /* Template Name: Api Template */ 

    if ( ! defined( ‘ABSPATH’ ) ) {
        exit;
    }

    $post = $_POST;

    update_post_meta( $post[\'post_id\'], \'post_data\', $post );
?>
API链接将是:yourdomain.com/newly-created-page-permalink.

SO网友:Mark Kaplun

由于4.4及以上版本的wordpress有一个“API”类型访问的官方端点—wp json,您可以通过定义自己的扩展点和处理程序来扩展它register_rest_route, 从未尝试过以这种方式发送非json负载,但我认为这应该是可能的,否则您的前端可以轻松地将其编码为json。

与其他答案相比,这里的优势在于它让wordpress知道请求是API请求,而不是前端请求。

(在旧版本中,您可以使用重写规则……但它太乱了,甚至无法提及)

SO网友:Cdorob

您应该从主题中已有的模板开始创建新的页面模板(编辑模板,更改页面顶部模板的名称,另存为其他PHP文件)。

然后将PHP代码添加到新文件中,以处理HTTP post。

最后一步是转到仪表板并使用新模板创建新页面。

SO网友:njmwas

我想举一个例子来说明马克·卡普伦的答案。您可以注册一个端点来使用register\\u rest\\u路由处理http post请求,如下所示:-

/** first create a function for processing your request*/
function process_my_request(WP_REST_Request $request){
   $request_body = $request->get_body_params();
   if(update_post_meta( $request_body[\'post_id\'], \'post_data\', $request_body )){
      $response = new WP_REST_Response(array(\'message\'=>\'Successful\'));
      $response->set_status(200);
      return $response;
   }
   else{
        return new WP_Error(\'invalid_request\', \'Something went wrong\', array(\'status\'=>403));
   }
}

/** then create a register route callback function */
function register_my_route(){
   register_rest_route(\'myplugin/v1\', \'/myroute\', array(
        \'methods\'=>\'POST\',
        \'callback\'=>\'process_my_request\'
   ));
}
add_action(\'rest_api_init\', \'register_my_route\');
完成后,现在可以将请求发布到以下路径

site_url(\'wp-json/myplugin/v1/myroute\');

相关推荐

get_posts custom field

这是一个愚蠢的问题,但我找不到合适的方式问谷歌。所以,如果这是一个重复的问题,很抱歉。我提供了一个带有复选框的自定义字段,用户可以检查是否希望此特定帖子进入主页。因此,在我的主页上,我呼吁所有已激活选中的帖子。我正在为自定义帖子类型CV创建自定义字段:function add_custom_post_meta_box() { add_meta_box( \'custom_post_meta_box\', // $id \'Campos Per