rest_api_init事件未被触发

Ant*_*tau 16 wordpress wordpress-rest-api

我试图在wp 4.7.4上运行自定义插件.下面是我的简单插件

add_action( 'rest_api_init', 'register_routes');


function register_routes() {
   register_rest_route( 'taxonomy-manager/v1', '/taxonomies/(P<taxonomy_type>[a-zA-Z]+)', array(
   'methods' => 'GET',
   'callback' => 'get_or_insert'
  ) );
} 

function get_or_insert( WP_REST_Request $request ) {

   $parameters = $request->get_params();

   return $parameters;

}
Run Code Online (Sandbox Code Playgroud)

当我请求wp-json端点时,我看不到插件路由.插件已成功激活.我错过了什么吗?以上插件(或基于rest_api_init事件的类似插件)是否适用于其他任何人?谢谢.

Gna*_*han 6

请参阅下面的检查清单,
1. 将您的永久链接更改为漂亮的永久链接并进行检查。
2. 检查您的 .htacess 文件(当您保存可通过 wp 重写的永久链接结构时,它应该是可写的)。
3. 检查身份验证。
4.检查下面的自定义端点创建方法,

add_action( 'rest_api_init', function () {
  register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'my_awesome_func',
  ) );
} );
Run Code Online (Sandbox Code Playgroud)

参考:https : //developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/

  • 漂亮的永久链接完成了这项工作 (2认同)

Sha*_*med 6

我得到了解决方案,您需要将 wp-json 与您的 URL 一起使用...例如 https://yourdomain.com/wp-json/namespace/and-so-on/

然后它会起作用。我在 URL 中缺少 wp-json。


Dha*_*yal 0

使用最新版本,我没有看到rest_api_init 操作被触发。看起来plugin.php中的这段代码总是空的并返回,永远不允许触发rest_api_init操作:

if ( empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
    return;
}
Run Code Online (Sandbox Code Playgroud)