wordpress 未激发rest_API_init事件

ax6ht2ek  于 2023-02-18  发布在  WordPress
关注(0)|答案(5)|浏览(190)

我正在尝试在wp4.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;

}

当我请求wp-json端点时,我在那里没有看到插件路由。插件被成功激活。我错过了什么吗?上面的插件(或基于rest_api_init事件的类似插件)对其他人有效吗?谢谢。

6yt4nkrj

6yt4nkrj1#

我得到了解决方案,你需要使用wp-json与您的网址...像https://yourdomain.com/wp-json/namespace/and-so-on/
那么它将工作。我在URL中丢失了wp-json。

yc0p9oo0

yc0p9oo02#

参考以下检查表,
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',
  ) );
} );

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

kkih6yb8

kkih6yb83#

在我的例子中,回调实际上是一个私有方法,我必须将它改为一个公共方法才能让所有的东西工作:

class Example {
    function __construct() {
        add_action( 'rest_api_init', [ $this, 'example_method' ] );
    }

    public function example_method() {
        /* This will not work if the method is private! */
        /* ... */
    }
}
new Example();

在一个安装中,私有方法导致堆栈跟踪错误,但在另一个安装中,私有方法没有被调用,也没有生成错误。我仍然不确定为什么一台机器的React是这样,而另一台机器没有,两台机器都将WP_DEBUGWP_DEBUG_LOG设置为true。

dldeef67

dldeef674#

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

if ( empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
    return;
}
gj3fmq9x

gj3fmq9x5#

检查你的插件是否被激活,如果它没有被激活,它不会开火。

相关问题