首页 视频课程 主题开发课程第20章、API接口 WordPress REST API 链接、潜入与发现

WordPress REST API 链接、潜入与发现

2023-06-11 / 314阅

WordPress REST API 链接、嵌入与发现

WordPress REST API允许您以可编程的方式访问和操作WordPress站点。通过链接和嵌入机制以及发现机制,您可以轻松地通过REST API获取站点上的数据。

链接

WordPress REST API使用链接机制允许您轻松找到相关的数据集合和单个资源。链接可以通过响应头部或响应正文中添加Link头实现。

例如,当您访问文章的集合时,响应头中会包含以下链接:

Link: <http://example.com/wp-json/wp/v2/posts?page=2>; rel="next", <http://example.com/wp-json/wp/v2/posts?page=16>; rel="last", <http://example.com/wp-json/wp/v2/posts?page=1>; rel="prev", <http://example.com/wp-json/wp/v2/posts>; rel="first" 

这些链接将帮助您轻松地浏览文章的集合。例如,您可以使用“next”链接来获取下一页。

嵌入

为了避免重复信息的传送,WordPress REST API使用嵌入机制允许您获取相关资源的部分或完整信息。对于嵌入的资源,您可以使用查询参数_embed来获取。

例如,当您访问文章的集合时,响应正文中每个文章包含的作者信息都是一个嵌入资源。使用以下查询参数可以将这些信息嵌入到响应中:

http://example.com/wp-json/wp/v2/posts?_embed 

发现

WordPress REST API还使用发现机制提供有关站点上可用资源的信息。您可以使用以下路径找到站点上的发现信息:

http://example.com/wp-json/ 

此路径下的响应内容将提供您可以访问的所有REST API资源。例如:

{
  "authentication": {},
  "_links": {
    "https://api.w.org/": {
      "href": "http://example.com/wp-json/"
    },
    "self": [
      {
        "href": "http://example.com/wp-json/"
      }
    ],
    "help": [
      {
        "href": "http://example.com/wp-json/wp/v2/posts"
      }
    ]
  },
  "namespaces": [
    {
      "namespace": "wp/v2",
      "href": "http://example.com/wp-json/wp/v2"
    }
  ]
} 

示例代码

以下是使用WordPress REST API获取文章的示例代码,包括链接、嵌入和发现机制:

// 获取文章的集合
$posts = file_get_contents('http://example.com/wp-json/wp/v2/posts');

// 输出文章的标题和内容
foreach ($posts as $post) {
    echo '<h2>' . $post['title']['rendered'] . '</h2>';
    echo '<p>' . $post['content']['rendered'] . '</p>';

    // 获取嵌入的作者信息
    $author = file_get_contents($post['_links']['author'][0]['href'] . '?_embed');
    echo '<p>Written by ' . $author['name'] . '</p>';
}

// 获取链接,例如获取下一页
$next_page_url = get_link_header($http_response_header, 'next');
if ($next_page_url) {
    $next_page = file_get_contents($next_page_url);
}

// 获取发现信息
$discovery = file_get_contents('http://example.com/wp-json/');
$namespaces = $discovery['namespaces'];
foreach ($namespaces as $namespace) {
    echo '<p>Namespace: ' . $namespace['namespace'] . '</p>';
} 

其中,get_link_header函数用于从响应头部的Link头中获取指定关系类型的链接:

function get_link_header($headers, $rel) {
    foreach ($headers as $header) {
        $matches = array();
        preg_match('/<([^>]+)>; rel="' . $rel . '"/', $header, $matches);
        if (!empty($matches)) {
            return $matches[1];
        }
    }
    return null;
} 

阅读文章或者观看视频过程中有任何问题,请下方留言或者联系我Q248758228

大家谈论
    我的见解
    目录