{"id":1828,"date":"2017-01-31T10:49:33","date_gmt":"2017-01-31T01:49:33","guid":{"rendered":"http:\/\/ni-ko.com\/column\/?p=1828"},"modified":"2017-01-31T10:49:33","modified_gmt":"2017-01-31T01:49:33","slug":"google-feed-api%e3%81%8c%e4%bd%bf%e3%81%88%e3%81%aa%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f%e3%81%ae%e3%81%a7%e4%bb%a3%e3%82%8f%e3%82%8a%e3%81%abphp%e3%81%a7","status":"publish","type":"post","link":"https:\/\/ni-ko.com\/column\/google-feed-api%e3%81%8c%e4%bd%bf%e3%81%88%e3%81%aa%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f%e3%81%ae%e3%81%a7%e4%bb%a3%e3%82%8f%e3%82%8a%e3%81%abphp%e3%81%a7\/","title":{"rendered":"google feed api\u304c\u4f7f\u3048\u306a\u304f\u306a\u3063\u305f\u306e\u3067\u4ee3\u308f\u308a\u306bPHP\u3067"},"content":{"rendered":"<p>\u7a81\u7136google feed api\u304c\u52d5\u304b\u306a\u304f\u306a\u3063\u3066\u5bfe\u5fdc\u306b\u8ffd\u308f\u308c\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u306e\u3067\u3001\u81ea\u5206\u3067PHP\u3092\u89e6\u308c\u308b\u65b9\u7528\u306bPHP\u3067\u540c\u3058\u3088\u3046\u306b\u51fa\u529b\u3059\u308b\u624b\u9806\u3092\u8a18\u8f09\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<h3>WordPress\u306e\u8a18\u4e8b\u3092\u53d6\u5f97\u3059\u308b\u5834\u5408<\/h3>\n<p>\u3075\u305f\u3064\u306ePHP\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u3044\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u3072\u3068\u3064\u3081\u3002\uff08feed.php\uff09<\/p>\n<pre class=\"lang:php decode:true\">&lt;?php\r\n\/**\r\n * RSS for PHP - small and easy-to-use library for consuming an RSS Feed\r\n *\r\n * @copyright  Copyright (c) 2008 David Grudl\r\n * @license    New BSD License\r\n * @version    1.2\r\n *\/\r\nclass Feed\r\n{\r\n\t\/** @var int *\/\r\n\tpublic static $cacheExpire = '1 day';\r\n\t\/** @var string *\/\r\n\tpublic static $cacheDir;\r\n\t\/** @var SimpleXMLElement *\/\r\n\tprotected $xml;\r\n\t\/**\r\n\t * Loads RSS or Atom feed.\r\n\t * @param  string\r\n\t * @param  string\r\n\t * @param  string\r\n\t * @return Feed\r\n\t * @throws FeedException\r\n\t *\/\r\n\tpublic static function load($url, $user = NULL, $pass = NULL)\r\n\t{\r\n\t\t$xml = self::loadXml($url, $user, $pass);\r\n\t\tif ($xml-&gt;channel) {\r\n\t\t\treturn self::fromRss($xml);\r\n\t\t} else {\r\n\t\t\treturn self::fromAtom($xml);\r\n\t\t}\r\n\t}\r\n\t\/**\r\n\t * Loads RSS feed.\r\n\t * @param  string  RSS feed URL\r\n\t * @param  string  optional user name\r\n\t * @param  string  optional password\r\n\t * @return Feed\r\n\t * @throws FeedException\r\n\t *\/\r\n\tpublic static function loadRss($url, $user = NULL, $pass = NULL)\r\n\t{\r\n\t\treturn self::fromRss(self::loadXml($url, $user, $pass));\r\n\t}\r\n\t\/**\r\n\t * Loads Atom feed.\r\n\t * @param  string  Atom feed URL\r\n\t * @param  string  optional user name\r\n\t * @param  string  optional password\r\n\t * @return Feed\r\n\t * @throws FeedException\r\n\t *\/\r\n\tpublic static function loadAtom($url, $user = NULL, $pass = NULL)\r\n\t{\r\n\t\treturn self::fromAtom(self::loadXml($url, $user, $pass));\r\n\t}\r\n\tprivate static function fromRss(SimpleXMLElement $xml)\r\n\t{\r\n\t\tif (!$xml-&gt;channel) {\r\n\t\t\tthrow new FeedException('Invalid feed.');\r\n\t\t}\r\n\t\tself::adjustNamespaces($xml);\r\n\t\tforeach ($xml-&gt;channel-&gt;item as $item) {\r\n\t\t\t\/\/ converts namespaces to dotted tags\r\n\t\t\tself::adjustNamespaces($item);\r\n\t\t\t\/\/ generate 'timestamp' tag\r\n\t\t\tif (isset($item-&gt;{'dc:date'})) {\r\n\t\t\t\t$item-&gt;timestamp = strtotime($item-&gt;{'dc:date'});\r\n\t\t\t} elseif (isset($item-&gt;pubDate)) {\r\n\t\t\t\t$item-&gt;timestamp = strtotime($item-&gt;pubDate);\r\n\t\t\t}\r\n\t\t}\r\n\t\t$feed = new self;\r\n\t\t$feed-&gt;xml = $xml-&gt;channel;\r\n\t\treturn $feed;\r\n\t}\r\n\tprivate static function fromAtom(SimpleXMLElement $xml)\r\n\t{\r\n\t\tif (!in_array('http:\/\/www.w3.org\/2005\/Atom', $xml-&gt;getDocNamespaces(), TRUE)\r\n\t\t\t&amp;&amp; !in_array('http:\/\/purl.org\/atom\/ns#', $xml-&gt;getDocNamespaces(), TRUE)\r\n\t\t) {\r\n\t\t\tthrow new FeedException('Invalid feed.');\r\n\t\t}\r\n\t\t\/\/ generate 'timestamp' tag\r\n\t\tforeach ($xml-&gt;entry as $entry) {\r\n\t\t\t$entry-&gt;timestamp = strtotime($entry-&gt;updated);\r\n\t\t}\r\n\t\t$feed = new self;\r\n\t\t$feed-&gt;xml = $xml;\r\n\t\treturn $feed;\r\n\t}\r\n\t\/**\r\n\t * Returns property value. Do not call directly.\r\n\t * @param  string  tag name\r\n\t * @return SimpleXMLElement\r\n\t *\/\r\n\tpublic function __get($name)\r\n\t{\r\n\t\treturn $this-&gt;xml-&gt;{$name};\r\n\t}\r\n\t\/**\r\n\t * Sets value of a property. Do not call directly.\r\n\t * @param  string  property name\r\n\t * @param  mixed   property value\r\n\t * @return void\r\n\t *\/\r\n\tpublic function __set($name, $value)\r\n\t{\r\n\t\tthrow new Exception(\"Cannot assign to a read-only property '$name'.\");\r\n\t}\r\n\t\/**\r\n\t * Converts a SimpleXMLElement into an array.\r\n\t * @param  SimpleXMLElement\r\n\t * @return array\r\n\t *\/\r\n\tpublic function toArray(SimpleXMLElement $xml = NULL)\r\n\t{\r\n\t\tif ($xml === NULL) {\r\n\t\t\t$xml = $this-&gt;xml;\r\n\t\t}\r\n\t\tif (!$xml-&gt;children()) {\r\n\t\t\treturn (string) $xml;\r\n\t\t}\r\n\t\t$arr = array();\r\n\t\tforeach ($xml-&gt;children() as $tag =&gt; $child) {\r\n\t\t\tif (count($xml-&gt;$tag) === 1) {\r\n\t\t\t\t$arr[$tag] = $this-&gt;toArray($child);\r\n\t\t\t} else {\r\n\t\t\t\t$arr[$tag][] = $this-&gt;toArray($child);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn $arr;\r\n\t}\r\n\t\/**\r\n\t * Load XML from cache or HTTP.\r\n\t * @param  string\r\n\t * @param  string\r\n\t * @param  string\r\n\t * @return SimpleXMLElement\r\n\t * @throws FeedException\r\n\t *\/\r\n\tprivate static function loadXml($url, $user, $pass)\r\n\t{\r\n\t\t$e = self::$cacheExpire;\r\n\t\t$cacheFile = self::$cacheDir . '\/feed.' . md5(serialize(func_get_args())) . '.xml';\r\n\t\tif (self::$cacheDir\r\n\t\t\t&amp;&amp; (time() - @filemtime($cacheFile) &lt;= (is_string($e) ? strtotime($e) - time() : $e))\r\n\t\t\t&amp;&amp; $data = @file_get_contents($cacheFile)\r\n\t\t) {\r\n\t\t\t\/\/ ok\r\n\t\t} elseif ($data = trim(self::httpRequest($url, $user, $pass))) {\r\n\t\t\tif (self::$cacheDir) {\r\n\t\t\t\tfile_put_contents($cacheFile, $data);\r\n\t\t\t}\r\n\t\t} elseif (self::$cacheDir &amp;&amp; $data = @file_get_contents($cacheFile)) {\r\n\t\t\t\/\/ ok\r\n\t\t} else {\r\n\t\t\tthrow new FeedException('Cannot load feed.');\r\n\t\t}\r\n\t\treturn new SimpleXMLElement($data, LIBXML_NOWARNING | LIBXML_NOERROR);\r\n\t}\r\n\t\/**\r\n\t * Process HTTP request.\r\n\t * @param  string\r\n\t * @param  string\r\n\t * @param  string\r\n\t * @return string|FALSE\r\n\t * @throws FeedException\r\n\t *\/\r\n\tprivate static function httpRequest($url, $user, $pass)\r\n\t{\r\n\t\tif (extension_loaded('curl')) {\r\n\t\t\t$curl = curl_init();\r\n\t\t\tcurl_setopt($curl, CURLOPT_URL, $url);\r\n\t\t\tif ($user !== NULL || $pass !== NULL) {\r\n\t\t\t\tcurl_setopt($curl, CURLOPT_USERPWD, \"$user:$pass\");\r\n\t\t\t}\r\n\t\t\tcurl_setopt($curl, CURLOPT_HEADER, FALSE);\r\n\t\t\tcurl_setopt($curl, CURLOPT_TIMEOUT, 20);\r\n\t\t\tcurl_setopt($curl, CURLOPT_ENCODING , '');\r\n\t\t\tcurl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); \/\/ no echo, just return result\r\n\t\t\tif (!ini_get('open_basedir')) {\r\n\t\t\t\tcurl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); \/\/ sometime is useful :)\r\n\t\t\t}\r\n\t\t\t$result = curl_exec($curl);\r\n\t\t\treturn curl_errno($curl) === 0 &amp;&amp; curl_getinfo($curl, CURLINFO_HTTP_CODE) === 200\r\n\t\t\t\t? $result\r\n\t\t\t\t: FALSE;\r\n\t\t} elseif ($user === NULL &amp;&amp; $pass === NULL) {\r\n\t\t\treturn file_get_contents($url);\r\n\t\t} else {\r\n\t\t\tthrow new FeedException('PHP extension CURL is not loaded.');\r\n\t\t}\r\n\t}\r\n\t\/**\r\n\t * Generates better accessible namespaced tags.\r\n\t * @param  SimpleXMLElement\r\n\t * @return void\r\n\t *\/\r\n\tprivate static function adjustNamespaces($el)\r\n\t{\r\n\t\tforeach ($el-&gt;getNamespaces(TRUE) as $prefix =&gt; $ns) {\r\n\t\t\t$children = $el-&gt;children($ns);\r\n\t\t\tforeach ($children as $tag =&gt; $content) {\r\n\t\t\t\t$el-&gt;{$prefix . ':' . $tag} = $content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\/**\r\n * An exception generated by Feed.\r\n *\/\r\nclass FeedException extends Exception\r\n{\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>\u3075\u305f\u3064\u3081\u3002\uff08feed1.php\uff09<\/p>\n<pre class=\"lang:php decode:true\">&lt;?php \r\nrequire_once \"feed.php\" ; \/\/feed-php\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\r\n$feed = new Feed ;\r\n$url = \"http:\/\/\u25cb\u25cb\u25cb\u25cb.com\/feed\/\"; \/\/RSS\u306eURL\u3092\u5165\u529b\u3059\u308b\r\n$rss = $feed-&gt;loadRss( $url ) ;\r\n$num = 3;\/\/\u8868\u793a\u3055\u305b\u305f\u3044\u4ef6\u6570\r\n$i=0;\r\n$desW = 30;\/\/\u8a18\u4e8b\u672c\u6587\u306e\u6587\u5b57\u6570\u3002\u5236\u9650\u3057\u306a\u3044\u3068\u304d\u306f0\u3002\r\nif ( $desW != 0){\r\n\t$desW = ($desW*2)+2;\r\n}\r\nforeach( $rss-&gt;item as $item )\r\n{\r\n\tif($i&gt;=$num){\r\n\t}\r\n\telse{\r\n\t\t$title = $item-&gt;title ;\t\/\/ \u30bf\u30a4\u30c8\u30eb\r\n\t\t$link = $item-&gt;link ; \/\/ \u30ea\u30f3\u30af\r\n\t\t$timestamp = strtotime( $item-&gt;pubDate ) ; \/\/ \u66f4\u65b0\u65e5\u6642\r\n\t\t$description = $item-&gt;description ; \/\/ \u8a73\u7d30\r\n\t\t$description = str_replace(\"\u25bc\u7d9a\u304d\u3092\u8aad\u3080\",\"\",$description);\r\n\t\t\/\/\u2191 \u7d9a\u304d\u3092\u8aad\u3080\u306a\u3069\u3001\u6c7a\u307e\u3063\u305f\u6587\u7ae0\u304c\u8a73\u7d30\u306b\u306f\u3044\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u3001\u305d\u308c\u3092\u9664\u5916\u3059\u308b\r\n\t\t$description = strip_tags($description);\r\n\t\tif ( $desW != 0){\r\n\t\t\t$description = mb_strimwidth($description, 0, $desW, \"\u2026\",'utf-8');\r\n\t\t}\r\n\t\t$thumbnail = trim($now_url,\"\/\") . \"http:\/\/\u25cb\u25cb\u25cb.png\";\/\/\u753b\u50cf\u304c\u306a\u3044\u5834\u5408\u306b\u8868\u793a\u3055\u305b\u308b\u753b\u50cfURL\r\n\t\tif( preg_match_all('\/&lt;img([\\s\\S]+?)&gt;\/is', $item-&gt;description, $matches) ){\r\n\t\t\tforeach( $matches[0] as $img ){\r\n\t\t\t\tif ($img === reset($matches[0])) {\/\/\u6700\u521d\u306e\u753b\u50cf\u306b\u30de\u30c3\u30c1\u3057\u305f\u3082\u306e\u3092\u8868\u793a\r\n\t\t\t\t\tif( preg_match('\/src=[\\'\"](.+?(jpe?g|png))[\\'\"]\/', $img, $m) ){\r\n\r\n\t\t\t\t\t\t$thumbnail = $m[1];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t?&gt;\r\n&lt;li&gt;\r\n&lt;img src=\"&lt;?php print $thumbnail; ?&gt;\" alt=\"&lt;?php print $item-&gt;title; ?&gt;\" width=\"100\"&gt;\r\n&lt;a href=\"&lt;?php echo $link; ?&gt;\" target=\"_blank\"&gt;&lt;?php echo date( \"Y\/m\/d\" , $timestamp ) ; ?&gt;\u3000&lt;?php echo $title; ?&gt;&lt;\/a&gt;\r\n&lt;?php echo $description; ?&gt;\r\n&lt;\/li&gt;\r\n&lt;?php\r\n\t\t$i++;\r\n\t}\r\n}\r\n?&gt;<\/pre>\n<p>\u7d30\u304b\u3044\u90e8\u5206\u306e\u8aac\u660e\u306f\u7701\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u3089\u3092\u898b\u3066\u30d4\u30f3\u3068\u6765\u306a\u3044\u65b9\u306f\u89e6\u3089\u306a\u3044\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u4e00\u5fdc\u3001\u8868\u8a18\u306f\u30b5\u30e0\u30cd\u30a4\u30eb\u753b\u50cf\u30fb\u65e5\u4ed8\u30fb\u30bf\u30a4\u30c8\u30eb\u30fb\u8a18\u4e8b\u672c\u6587\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>class\u5c5e\u6027\u306a\u3069\u3092\u3064\u3051\u3066css\u306a\u3069\u3067\u8868\u8a18\u306f\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u79c1\u306e\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092html\u306b\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>\u305d\u306e\u30bd\u30fc\u30b9\u3082\u8f09\u305b\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">&lt;ul&gt;\r\n&lt;?php include(dirname(__FILE__) . \"\/feed1.php\"); ?&gt;\r\n&lt;\/ul&gt;<\/pre>\n<p>\u30ea\u30b9\u30c8\u306e\u4e2d\u8eab\u3057\u304bphp\u306b\u66f8\u304b\u306a\u304b\u3063\u305f\u306e\u3067&lt;ul&gt;&lt;\/ul&gt;\u3067\u56f2\u3044\u307e\u3057\u305f\u3002<br \/>\n\u3053\u308c\u3060\u3051\u306a\u611f\u3058\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u30cb\u30b3\u30b1\u30a2\u3092\u3054\u5229\u7528\u3044\u305f\u3060\u3044\u3066\u3044\u308b\u65b9\u306f\u7121\u511f\u3067\u4fee\u6b63\u3055\u305b\u3066\u9802\u304d\u307e\u3057\u305f\u3002<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h3>\u3069\u3046\u3057\u3066\u3082\u81ea\u5206\u3067\u3084\u3063\u3066\u307f\u305f\u3044\u3051\u3069\u51fa\u6765\u306a\u3044\u65b9\u3078<\/h3>\n<p>\u30b5\u30f3\u30d7\u30eb\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092UP\u3057\u307e\u3057\u305f\u306e\u3067\u3001\u3054\u5229\u7528\u304f\u3060\u3055\u3044\u307e\u305b\u3002<\/p>\n<div class=\"link_normal\"><a href=\"http:\/\/ni-ko.com\/column\/wp-content\/uploads\/2017\/01\/sample.zip\">sample\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/a><\/div>\n<p>&nbsp;<\/p>\n<h3>\u3082\u30fc\u7121\u7406\uff01\u308f\u304b\u3093\u306d\u3048\uff01\u3068\u3044\u3046\u65b9\u3078<\/h3>\n<p>\u5f53\u793e\u3067\u4fee\u5fa9\u306e\u4ee3\u884c\u3082\u3055\u305b\u3066\u9802\u3044\u3066\u304a\u308a\u307e\u3059\u3002<br \/>\n<a href=\"http:\/\/ni-ko.com\/column\/%E3%82%B5%E3%82%A4%E3%83%88%E4%BF%AE%E7%90%86%E3%83%BB%E4%BF%9D%E5%AE%88%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%80%80%E6%96%99%E9%87%91%E4%B8%80%E8%A6%A7\/\">&gt;&gt;\u6599\u91d1\u76ee\u5b89<\/a><\/p>\n<p>\u305c\u3072\u3054\u5229\u7528\u304f\u3060\u3055\u3044\u307e\u305b\u3002<\/p>\n<p>&nbsp;<\/p>\n<h3>\u30a2\u30e1\u30d6\u30ed\u3092\u3054\u5229\u7528\u306e\u65b9\u3078<\/h3>\n<p>\u30a2\u30e1\u30d6\u30ed\u306e\u5834\u5408\u3001\u4eca\u56de\u306eWordPress\u306e\u8a18\u4e8b\u4e00\u89a7\u306e\u53d6\u5f97\u3068\u306f\u5c11\u3057\u7570\u306a\u3063\u3066\u3044\u307e\u3057\u305f\u3002<br \/>\n\uff08\u7279\u306b\u753b\u50cf\u53d6\u5f97\u306e\u90e8\u5206\uff09<br \/>\n\u3053\u3061\u3089\u306e\u4fee\u5fa9\u3082\u304a\u6c17\u8efd\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u307e\u305b\u3002<\/p>\n<p>&nbsp;<\/p>\n<div class=\"link_normal\"><a class=\"button\" href=\"http:\/\/ni-ko.com\/form\/\">\u304a\u554f\u5408\u308f\u305b\u306f\u3053\u3061\u3089\u3002<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u7a81\u7136google feed api\u304c\u52d5\u304b\u306a\u304f\u306a\u3063\u3066\u5bfe\u5fdc\u306b\u8ffd\u308f\u308c\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u306e\u3067\u3001\u81ea\u5206\u3067PHP\u3092\u89e6\u308c\u308b\u65b9\u7528\u306bPHP\u3067\u540c\u3058\u3088\u3046\u306b\u51fa\u529b\u3059\u308b\u624b\u9806\u3092\u8a18\u8f09\u3057\u3066\u304a\u304d\u307e\u3059\u3002  &#8230; <\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[213,165],"tags":[24,191,214,215],"class_list":["post-1828","post","type-post","status-publish","format-standard","hentry","category-wordpress","category-165","tag-24","tag-wordpress","tag-google-feed-api","tag-215"],"_links":{"self":[{"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/posts\/1828","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/comments?post=1828"}],"version-history":[{"count":8,"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/posts\/1828\/revisions"}],"predecessor-version":[{"id":1837,"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/posts\/1828\/revisions\/1837"}],"wp:attachment":[{"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/media?parent=1828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/categories?post=1828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ni-ko.com\/column\/wp-json\/wp\/v2\/tags?post=1828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}