何ができるか?
WordPress で運用している複数のサイトの記事を、別のサイトに読み込んで表示できる。
WordPress のテンプレートタグは使えないのか?
「複数サイト」という条件があると、使えない。
| 1 | <?php require_once ('./wp/wp-load.php'); ?> | 
PHP でこれを付けると、同じドメインに限り記事を読み込めるが、「複数サイト」で読み込む方法が見つからなかった。
方法
jQuery で、WordPress のJSON を読み込む
“http://www.hogehoge.com/wp1/” にWordPress がインストールされている場合、次のURL でアクセスすると、JSON が取得できる。
| 1 | http://www.hogehoge.com/wp1/wp-json/wp/v2/posts?_embed&per_page=3 | 
“posts”以降の記述は、”_embed”で写真データを要求、”per_page=3” で記事を3つ取得
HTML の表示部分
| 1 | <div class="p-blog__first"></div> | 
JavaScript コード
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script><!-- jquery を読み込み -->     <script type="text/javascript">         $.getJSON( "http://www.hogehoge.com/wp/wp-json/wp/v2/posts?_embed&per_page=3", function(results) {             $.each(results, function(i, item) {                 var date_data = new Date(item.date);                 var year = date_data.getFullYear();                 var month = date_data.getMonth() + 1;                 var day = date_data.getDate();                 var title = item.title.rendered;                 var link = item.link;                 var date = year + '年' + month + '月' + day + '日';                 var datetime = year + '-' + month + '-' + day;                 /* 記事アイキャッチ画像の取得、画像がない場合は、代替画像を使う*/                 var thum                 if (item._embedded["wp:featuredmedia"]) {                     thum = item._embedded["wp:featuredmedia"][0].media_details.sizes.thumbnail.source_url                 } else {                     thum = "/images/logo.jpg";                 }                 /* 記事の書き出し */                 $(".p-blog__first").append(                 "<div class='p-blog'>                 <a href='"+                 link + "' class='p-blog__link'>" +                 "<div class='p-blog__thumb'><img src='" +                 thum + "' alt='#'></div>" +                 "<p class='p-blog__date'><time datetime='" +                 datetime + "'>" +                 date + "</time></p>" +                 "<p class='p-blog__title'>" +                 title + "</p></a></div>");             });         });         </script> | 
複数ブログを読み込む
HTML の表示部分
| 1 2 | <div class="p-blog__first"></div> <div class="p-blog__second"></div> | 
JavaScript コード
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>     <script type="text/javascript">     jQuery( function () {         /* 各ブログのJSONを指定。URL に"_embed"で写真データを要求、"per_page=3" で記事を3つ取得*/         /* 1つ目のブログ最新記事を表示 */         readBlogJson("http://www.hogehoge.com/wp1/wp-json/wp/v2/posts?_embed&per_page=3", ".p-blog__first");         /* 2つ目のブログ最新記事を表示 */         readBlogJson("http://www.hogehoge.com/wp2/wp-json/wp/v2/posts?_embed&per_page=3", ".p-blog__second");     });     /* JSON を取得して、ブログ最新記事を表示       * 引数は、url:WordPress JSON のURL、dom:内容を表示するHTMLのクラス名 */     function readBlogJson(url, dom) {     /* 各WordPress のJSON を読み込んで、記事を表示する*/         $.getJSON( url, function(results) {             $.each(results, function(i, item) {                 var date_data = new Date(item.date);                 var year = date_data.getFullYear();                 var month = date_data.getMonth() + 1;                 var day = date_data.getDate();                 var title = item.title.rendered;                 var link = item.link;                 var date = year + '年' + month + '月' + day + '日';                 var datetime = year + '-' + month + '-' + day;                 /* 記事アイキャッチ画像の取得、画像がない場合は、代替画像を使う*/                 var thum                 if (item._embedded["wp:featuredmedia"]) {                     thum = item._embedded["wp:featuredmedia"][0].media_details.sizes.thumbnail.source_url                 } else {                     thum = "/images/logo.jpg";                 }                 /* 記事の書き出し */                 $(dom).append(                 "<div class='p-blog'><a href='"+                 link + "' class='p-blog__link'>" +                 "<div class='p-blog__thumb'><img src='" +                 thum + "' alt='#'></div>" +                 "<p class='p-blog__date'><time datetime='" +                 datetime + "'>" +                 date + "</time></p>" +                 "<p class='p-blog__title'>" +                 title + "</p></a></div>");             });         });     }     </script>	 |