質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSONP

JSONP(JSON with padding)は、JSONを使用した関数呼び出しのための仕組み。クロスドメインでのデータの受け渡しが可能です。JavaScriptからクロスドメインで容易にデータを扱うことができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

1回答

381閲覧

WordPressの投稿一覧をJSONで書き出す

a2s

総合スコア39

JSONP

JSONP(JSON with padding)は、JSONを使用した関数呼び出しのための仕組み。クロスドメインでのデータの受け渡しが可能です。JavaScriptからクロスドメインで容易にデータを扱うことができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2022/08/23 02:45

こちらのサイトを参考に、WordpressにJSONの固定ページを作成しました。
https://temari.co.jp/blog/2020/09/27/wordpress-3/

設定自体はできていて、タイトル・サムネイル等の取得はできるのですが、カテゴリーとタグだけがArray になってしまい取得が出来ません。
書き出し方が悪いのでしょうか…?

PHP(Wordpress側)

1<?php 2/* 3Template Name: JSON 4*/ 5 6$args = array( 7 'numberposts' => -1, //全件 8); 9$posts = get_posts($args); 10 11if($posts): foreach($posts as $post): 12 13 $category_list = []; 14 $cat_list = get_the_category(); 15 foreach ($cat_list as $cat) { 16 array_push($category_list, $cat->name); 17 } 18 19 $tag_list = []; 20 $term_list = get_the_tags(); 21 foreach ($term_list as $term) { 22 array_push($tag_list, $term->name); 23 } 24 25 $json[] = array( 26 'id' => get_the_ID(), 27 'date' => get_the_date(), 28 'title' => get_the_title(), 29 'url' => get_the_permalink(), 30 'img' => get_the_post_thumbnail_url('', 'full' ), 31 'thumbnail' => get_the_post_thumbnail_url('', 'thumbnail' ), 32 'category' => $category_list, 33 'tag' => $tag_list, 34 'description' => get_the_excerpt(), 35 ); 36 37endforeach; endif; 38header("Content-Type: application/json; charset=utf-8"); 39echo json_encode($json, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); 40 41?>

PHP(出力側)

1<?php 2 3$url = 'http://example.com/json/'; 4$json = mb_convert_encoding(file_get_contents($url), 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 5$arr = json_decode($json,true); 6 7$json_list = array_slice($arr, 0, 5); 8foreach($json_list as $data): ?> 9 <div style="margin-top: 1rem;"> 10 <p><img src="<?php echo $data['img']; ?>"></p> 11 <h1><?php echo $data['title']; ?></h1> 12 <p class="id"><?php echo $data['id']; ?></p> 13 <time><?php echo $data['date']; ?></time> 14 <p class="url"><a href="<?php echo $data['url']; ?>"><?php echo $data['url']; ?></a></p> 15 <p class="category"><?php echo $data['category']; ?></p> 16 <p class ="tag"><?php echo $data['tag']; ?></p> 17 <p><?php echo $data['description']; ?></p> 18 </div> 19<?php endforeach ?>

HTML

1 <div style="margin-top: 1rem;"> 2 <p><img src="http:://example.com/example01.jpg"></p> 3 <h1>記事タイトル1</h1> 4 <p class="id">01</p> 5 <time>2022-08-23</time> 6 <p class="url"><a href="http:://example.com/article01/">http:://example.com/article01/</a></p> 7 <p class="category">Array</p> 8 <p class="tag">Array</p> 9 <p>記事本文01</p> 10 </div> 11 <div style="margin-top: 1rem;"> 12 <p><img src="http:://example.com/example02.jpg"></p> 13 <h1>記事タイトル2</h1> 14 <p class="id">02</p> 15 <time>2022-08-24</time> 16 <p class="url"><a href="http:://example.com/article02/">http:://example.com/article02/</a></p> 17 <p class="category">Array</p> 18 <p class="tag">Array</p> 19 <p>記事本文02</p> 20 </div> 21 <div style="margin-top: 1rem;"> 22 <p><img src="http:://example.com/example03.jpg"></p> 23 <h1>記事タイトル3</h1> 24 <p class="id">03</p> 25 <time>2022-08-25</time> 26 <p class="url"><a href="http:://example.com/article03/">http:://example.com/article03/</a></p> 27 <p class="category">Array</p> 28 <p class="tag">Array</p> 29 <p>記事本文03</p> 30 </div> 31 <div style="margin-top: 1rem;"> 32 <p><img src="http:://example.com/example04.jpg"></p> 33 <h1>記事タイトル4</h1> 34 <p class="id">04</p> 35 <time>2022-08-26</time> 36 <p class="url"><a href="http:://example.com/article04/">http:://example.com/article04/</a></p> 37 <p class="category">Array</p> 38 <p class="tag">Array</p> 39 <p>記事本文04</p> 40 </div> 41 <div style="margin-top: 1rem;"> 42 <p><img src="http:://example.com/example05.jpg"></p> 43 <h1>記事タイトル5</h1> 44 <p class="id">05</p> 45 <time>2022-08-27</time> 46 <p class="url"><a href="http:://example.com/article05/">http:://example.com/article05/</a></p> 47 <p class="category">Array</p> 48 <p class="tag">Array</p> 49 <p>記事本文05</p> 50 </div>

実現したいこと

以下のように、カテゴリー・タグがきちんと出力されるようにしたい。

HTML

1 <div style="margin-top: 1rem;"> 2 <p><img src="http:://example.com/example01.jpg"></p> 3 <h1>記事タイトル1</h1> 4 <p class="id">01</p> 5 <time>2022-08-23</time> 6 <p class="url"><a href="http:://example.com/article01/">http:://example.com/article01/</a></p> 7 <p class="category">カテゴリー1</p> 8 <p class="tag">タグ1, タグ2</p> 9 <p>記事本文01</p> 10 </div> 11 <div style="margin-top: 1rem;"> 12 <p><img src="http:://example.com/example02.jpg"></p> 13 <h1>記事タイトル2</h1> 14 <p class="id">02</p> 15 <time>2022-08-24</time> 16 <p class="url"><a href="http:://example.com/article02/">http:://example.com/article02/</a></p> 17 <p class="category">カテゴリー2</p> 18 <p class="tag">タグ2</p> 19 <p>記事本文02</p> 20 </div> 21 <div style="margin-top: 1rem;"> 22 <p><img src="http:://example.com/example03.jpg"></p> 23 <h1>記事タイトル3</h1> 24 <p class="id">03</p> 25 <time>2022-08-25</time> 26 <p class="url"><a href="http:://example.com/article03/">http:://example.com/article03/</a></p> 27 <p class="category">カテゴリー1, カテゴリー2</p> 28 <p class="tag">タグ1</p> 29 <p>記事本文03</p> 30 </div> 31 <div style="margin-top: 1rem;"> 32 <p><img src="http:://example.com/example04.jpg"></p> 33 <h1>記事タイトル4</h1> 34 <p class="id">04</p> 35 <time>2022-08-26</time> 36 <p class="url"><a href="http:://example.com/article04/">http:://example.com/article04/</a></p> 37 <p class="category">カテゴリー1</p> 38 <p class="tag">タグ2</p> 39 <p>記事本文04</p> 40 </div> 41 <div style="margin-top: 1rem;"> 42 <p><img src="http:://example.com/example05.jpg"></p> 43 <h1>記事タイトル5</h1> 44 <p class="id">05</p> 45 <time>2022-08-27</time> 46 <p class="url"><a href="http:://example.com/article05/">http:://example.com/article05/</a></p> 47 <p class="category">カテゴリー1, カテゴリー2</p> 48 <p class="tag">タグ1, タグ2</p> 49 <p>記事本文05</p> 50 </div>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

単純に表示させるだけでいいならimplode(join)で結合してみては。

php

1<?php echo implode($data['category'], ', '); ?>

投稿2022/08/23 03:30

RiaFeed

総合スコア2701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a2s

2022/08/23 04:53

ありがとうございます!こちらの方法で無事出力できました。 ちなみに、カテゴリー/タグ1つひとつ区切って出力する場合もこちらの記述でできますでしょうか…?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問