Wordpress API - 链接到帖子列表中的完整帖子详细信息

时间:2016-08-24 10:46:48

标签: php wordpress wordpress-json-api

我已将Wordpress API安装到我们公司的网站上,以便我们可以从中检索数据以显示在新的公司网站上。关于抓取和显示初始数据一切正常(从原始网站的特定类别发布到新网站上的特定页面)。

这是针对在酒吧/餐厅进行的现有网站上的“whats on”页面上输入的事件。新网站完全专注于活动,并且无需在我们认为最适合使用API​​的两个网站上添加/修改活动。

要检索完整的事件列表(有效),我使用:

$response = wp_remote_get( 'http://restuarantdomain.com/wp-json/wp/v2/posts?filter[category_name]=live-events&per_page=50' );

我也知道要显示我需要使用的单个帖子:

$response = wp_remote_get( 'http://restaurantdomain.com/wp-json/wp/v2/posts?filter[name]=event_name );

我无法解决的问题是在新网站上创建一个“友好”网址,然后转到调用该功能的网页以获取各个帖子的详细信息。

例如,我希望网址http://eventdomain.com/whats-on/event-name(在通过上面第一个API调用获取的事件帖子列表中)转到页面上的内容和页面上的内容使用来自网址的事件名称作为上面第二个API调用中的参数。但是Wordpress只是查找类别和帖子名称,因为url的格式不存在,所以我只得到404.

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您必须创建自定义端点。

例如,如果你想过滤特定类别中的所有帖子,你应该这样做

function my_cat_func( $data ) {
    $posts = get_posts( array(
        'cat' => $data['id'],
    ) );

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

    return $posts[0]->post_title;
}

然后您必须添加一个操作来注册您的端点调用

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v2', '/categoy/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'my_cat_func',
    ) );
} );

然后你会得到类似的东西

http://example.com/wp-json/myplugin/v2/categoy/(?P<id>\d+)

有关更多信息和更好的理解,我建议您阅读此参考: http://v2.wp-api.org/extending/adding/

本文还可以为您提供更多示例:https://webdevstudios.com/2015/07/09/creating-simple-json-endpoint-wordpress/https://deliciousbrains.com/wp-rest-api-customizing-endpoints-adding-new-ones/

注意:我动态编写了这段代码,应该需要更多努力才能工作。