rest_no_route custom route

时间:2020-04-06 作者:sialfa

我得到一个rest_no_route 尝试使用已创建的自定义端点时出错。有什么解决办法吗?我在插件类中创建主题路由,但我认为这不是问题。我使用axios在前端获取数据。

class theme_Rest_Routes extends WP_REST_Controller{

  public static function init()
  {
    add_action( \'rest_api_init\', array( __CLASS__, \'register_routes\') );
  }

  public function register_routes()
  {
    register_rest_route( \'theme/v1\', \'/menu/\', array(
      \'methods\' => \'GET\',
      \'callback\' => array(__CLASS__, \'theme_rest_menu\'))
    );

  }

  public function theme_rest_menu( $request )
  {
    return wp_get_nav_menu_items(\'menu\');
  }

}
theme_Rest_Routes::init();

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

问题是,您正在从非静态方法内部调用静态方法。以下操作将起作用。

class theme_Rest_Routes extends WP_REST_Controller{

    public static function init() {
        $instance = new self();
        add_action( \'rest_api_init\', array( $instance, \'register_routes\' ) );
    }

    public function register_routes() {
        register_rest_route( \'theme/v1\', \'/menu/\', array(
            \'methods\' => \'GET\',
            \'callback\' => array( $this, \'theme_rest_menu\' ) )
        );
    }

    public function theme_rest_menu( $request ) {
        return wp_get_nav_menu_items( \'menu\' );
    }
}
theme_Rest_Routes::init();

代码改进rest_api_init 从控制器类本身内部,而不是从外部类/函数调用它。类名也应该使用大写单词。如下所示:

function theme_register_rest_apis() {
    $controller = new Theme_Rest_Routes();
    $controller->register_routes();
}
add_action( \'rest_api_init\', \'theme_register_rest_apis\' );

class Theme_Rest_Routes extends WP_REST_Controller{

    public function register_routes() {
        register_rest_route( \'theme/v1\', \'/menu/\', array(
            \'methods\' => \'GET\',
            \'callback\' => array( $this, \'theme_rest_menu\' ) )
        );
    }

    public function theme_rest_menu( $request ) {
        return wp_get_nav_menu_items( \'menu\' );
    }
}

相关推荐

400个错误请求进入AJAX调用

我尝试,当单击submit按钮时,用一些值传递ajax请求,然后计算这些值并返回。My Problem : 当我进行自定义Ajax调用时,我从管理Ajax得到400个错误。php。请帮我找出我的错误或最好的方法来做这件事。Ajax Call - footer.php(theme footer) <script> $(function() { $(\"#calc_form\").on(\"submit\", function(e) {