WP REST API自定义终结点在我的插件中不起作用

时间:2018-11-22 作者:Jacob Thygesen

我真的很感激在这方面的帮助,因为我已经尝试了很多次了。

我从一个名为“ydelse”的自定义帖子类型中创建了这个非常简单的som基本信息端点。

下面是我创建自定义rest端点的类

class jw_salonbooking_ydelseliste_REST_Controller extends WP_REST_Controller { 

    public function register_routes() {
        $version = \'1\';
        $namespace = \'jw_salonbooking/v\' . $version;

        $base = \'/ydelseliste/\';
        register_rest_route( $namespace + $base, array(
            \'methods\' => \'GET\',
            \'callback\' => array ($this, \'my_awesome_func\'),
        ) );
    }


    public function register_hook() {
        add_action ( \'rest_api_init\', array( $this, \'register_routes\' )     );
    }

    public function my_awesome_func( $data ) {
        $posts = get_posts( array(
            \'type\' => \'ydelse\',
        ) );

        if ( empty( $posts ) ) {
            return null;
        }

        $ydelseliste = array();
        $counter=0;

        foreach ($posts as $post) {
            $ydelseliste[$counter][\'titel\']       = $post->title;
            $ydelseliste[$counter][\'pris\']        = $post->jw_salon_booking_ydelse_pris;
            $ydelseliste[$counter][\'varighed\']    = $post->jw_salon_booking_varighed;
            $ydelseliste[$counter][\'beskrivelse\'] = $post->content;        
            $counter++;
        }

    return $ydelseliste;
    }
}
然后在插件的构造函数中执行此操作:

     require_once (dirname( __FILE__ ) . \'/rest-routes/jw-salonbooking-ydelseliste-rest-controller.php\');
     //* Registrer ydelseliste REST controller 
     $ydelseliste_route = new jw_salonbooking_ydelseliste_REST_Controller();
     $ydelseliste_route->register_hook();
我知道我的构造函数正在工作,因为所有其他add\\u操作都执行得很好。当我开发route类时,我从Postman 当我执行af GET请求时,如下所示:

    https://zebrafinken.dk/testsite/wp-json/jw_salonbooking/v1/ydelseliste/
但现在我得到的结果是:

{
    "code": "rest_no_route",
    "message": "Ingen rute blev fundet der matchede URL og anmodningen",
    "data": {
        "status": 404
    }
}
我希望有人能引导我朝着正确的方向前进,或者找到答案。

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

这是由@Sally CJ发布的一个简单的拼写错误。

而不是

$namespace + $base
使用

$namespace . $base
谢谢你

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x