Wordpress 自定义端点 rest api(Post 方法)不起作用
Wordpress Custom Endpoint rest api (Post Method) not working
这是我的自定义终点,但它说
"No route was found matching the URL and request method"
我在主题文件夹中添加了 function.php 文件。
当我将方法 'POST' 更改为 'GET' 时,它适用于 get 方法
.htaccess 文件没问题任何其他插件如 securty 或其他未安装的 api 插件
只有 "WP REST API plugin" 被激活
add_action( 'rest_api_init', 'myfunction' );
function myfunction() {
register_rest_route( 'app', '/addmeta', array(
'methods' => 'POST',
'callback' => 'vendor_serve_route'
) );
}
function vendor_serve_route(WP_REST_Request $request_data ) {
// Fetching values from API
$data = $request_data->get_params();`enter code here`
$user_data = array( 'user_login' => $data['first_name'],
'user_email' => $data['user_email'],
'nickname' => $data['user_name'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
);
return ['Data' => $user_data];
}
已在评论中说明,但现在有更多解释:
该代码似乎可以很好地创建一个端点,所以它应该是您对端点的请求中的一个错误。问题是您只是更改端点的 HTTP 方法,而不是对端点的实际请求的 HTTP 方法。
此代码将创建一个端点,该端点接受 POST
对 YOUR_DOMAIN/wp-json/app/addmeta
的请求。
向 functions.php
文件添加大量代码不是一个好的做法,因为它会变得非常大并且难以维护。
您应该为此创建一个插件(这是一个非常简单的过程)并将新代码放在那里。这样,它就被隔离了,您甚至可以轻松地在其他应用程序中重用它。
要创建插件,您需要:
- 在
/plugins
下为您的插件创建一个新目录
- 在该目录中创建一个与目录同名的
.php
文件
- 在描述您的插件的主文件中包含 header 注释
示例:
- 目录:
.../plugins/my-api-endpoints
- 文件:
my-api-endpoints.php
然后在文件中包含注释:
<?php
/**
* Plugin Name: My API Endpoints
* Plugin URI:
* Description: This plugins handles the submissions for my API.
* Version: 0.1
* Author: John Doe
* Author URI: http://johndoe
*/
your code here...
这是我的自定义终点,但它说 "No route was found matching the URL and request method" 我在主题文件夹中添加了 function.php 文件。 当我将方法 'POST' 更改为 'GET' 时,它适用于 get 方法 .htaccess 文件没问题任何其他插件如 securty 或其他未安装的 api 插件 只有 "WP REST API plugin" 被激活
add_action( 'rest_api_init', 'myfunction' );
function myfunction() {
register_rest_route( 'app', '/addmeta', array(
'methods' => 'POST',
'callback' => 'vendor_serve_route'
) );
}
function vendor_serve_route(WP_REST_Request $request_data ) {
// Fetching values from API
$data = $request_data->get_params();`enter code here`
$user_data = array( 'user_login' => $data['first_name'],
'user_email' => $data['user_email'],
'nickname' => $data['user_name'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
);
return ['Data' => $user_data];
}
已在评论中说明,但现在有更多解释:
该代码似乎可以很好地创建一个端点,所以它应该是您对端点的请求中的一个错误。问题是您只是更改端点的 HTTP 方法,而不是对端点的实际请求的 HTTP 方法。
此代码将创建一个端点,该端点接受 POST
对 YOUR_DOMAIN/wp-json/app/addmeta
的请求。
向 functions.php
文件添加大量代码不是一个好的做法,因为它会变得非常大并且难以维护。
您应该为此创建一个插件(这是一个非常简单的过程)并将新代码放在那里。这样,它就被隔离了,您甚至可以轻松地在其他应用程序中重用它。
要创建插件,您需要:
- 在
/plugins
下为您的插件创建一个新目录 - 在该目录中创建一个与目录同名的
.php
文件 - 在描述您的插件的主文件中包含 header 注释
示例:
- 目录:
.../plugins/my-api-endpoints
- 文件:
my-api-endpoints.php
然后在文件中包含注释:
<?php
/**
* Plugin Name: My API Endpoints
* Plugin URI:
* Description: This plugins handles the submissions for my API.
* Version: 0.1
* Author: John Doe
* Author URI: http://johndoe
*/
your code here...