1

我已经在我们公司的网站上安装了 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 );

我不知道该怎么做是在新网站上创建一个“友好”的网址,然后该网址将转到调用该函数以获取个人帖子详细信息的页面。

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

我错过了什么?

4

1 回答 1

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-端点添加新的/

注意:我在运行中编写了这段代码,应该需要更多的努力才能工作。

于 2016-08-24T15:36:30.450 回答