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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

919閲覧

WP REST APIを使い取得した投稿記事にカテゴリ名も表示したい

Kanakuwa

総合スコア11

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2022/09/13 02:36

WP REST APIを使い取得した投稿記事にカテゴリ名も表示したい

WP REST APIを使った投稿記事の取得でカテゴリ名も表示させたいのですが
カテゴリ表示で行き詰ってしまいました。

index.phpに同サーバー内の下層フォルダ内のWordpressから下記URL参考に
phpで記事を取得しています。
https://ocws.jp/blog/post1790/

特定のカテゴリ毎に記事の表示はできています。

取得した記事にカテゴリ名も含めたいので、下記URLを参考にし、
functions.php内に下記サイト内の
「カテゴリが一つであれば良いのですが、二つ以上になった場合」の
コードを追加しました。
https://oku-log.com/blog/rest-api-category/

出力する側のページ設定でphpの場合のカテゴリ名の出力方法が分からず困っています。

カテゴリ名が難しければ、カテゴリIDもしくはカテゴリスラッグだけでも取得できれば
cssで対応できるので、IDだけでも構いません。

該当のソースコード

php

1 <?php 2 $url = "https://ドメイン/フォルダ名/wp/wp-json/wp/v2/posts?_embed&categories=22+17+16+14+15"; 3 $json = file_get_contents($url); 4 $arr = json_decode($json,true); 5 ?> 6 <?php 7 foreach ($arr as $data): 8 $title = $data["title"]["rendered"]; 9 $date = date('Y.n.j', strtotime($data["date"])); 10 $link = $data["link"]; 11 $thum = $data["_embedded"]["wp:featuredmedia"][0]["media_details"]["sizes"]["medium"]["source_url"]; 12 $cat = $data["categories"]; 13 ?> 14 <li class="slide"> 15 <a href="<?php echo $link; ?>" class="slide_link slide01"> 16 <div class="img_wrap"> 17 <div class="img_wrap"> 18 <img src="<?php echo $thum; ?>"> 19 <span class="cat-label"> 20 <?php echo $cat; ?> 21 </span> 22 </div> 23 </div> 24 <p class="slide_text-wrap"> 25 <time calss="date"><?php echo $date; ?></time> 26 27 <span class="news_title"><?php echo $title; ?></span> 28 </p> 29 </a> 30 </li>

試したこと

上記

<?php echo $cat; ?>

だと Array が表示されます。

大変お恥ずかしいのですが、WP REST APIを使用するのも初めてで、phpも勉強中の状況です。
function.phpに記載した、$cat_name 'category_name' との関連が分かっておりません。。。

3日間悩んでいます。他にも色々コードを触ってみましたが表示されません。
どなたかお力添えをいただけると助かります。
すみませんが、よろしくお願いいたします。 

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

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

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

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

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

guest

回答1

0

自己解決

解決方法を記載するのも恥ずかしい状況です(PHPの勉強を頑張ります!)が、
表示はされたので掲載します。

カテゴリ名の取得はできませんでしたが、カテゴリIDの取得はできたので、
IDを取得し、cssでカテゴリ名を表示させました。

カテゴリID取得php

php

1$cat = $data["categories"][0];

php

1 <?php 2 $url = "https://ドメイン名/ファイル名/topic/wp/wp-json/wp/v2/posts?_embed&categories=1+23"; 3 $json = file_get_contents($url); 4 $arr = json_decode($json,true); 5 ?> 6 7 <?php 8 foreach ($arr as $data): 9 $title = $data["title"]["rendered"]; 10 $date = date('Y.n.j', strtotime($data["date"])); 11 $link = $data["link"]; 12 $thum = $data["_embedded"]["wp:featuredmedia"][0]["media_details"]["sizes"]["medium"]["source_url"]; 13 $cat = $data["categories"][0]; 14 ?> 15 <li class="slide"> 16 <a href="<?php echo $link; ?>" class="slide_link slide01"> 17 <div class="img_wrap"> 18 <div class="img_wrap"> 19 <img src="<?php echo $thum; ?>"> 20 <span class="cat-label cat-label-<?php echo $cat; ?>"> 21 </span> 22 </div> 23 </div> 24 <p class="slide_text-wrap"> 25 <time calss="date"><?php echo $date; ?></time> 26 <span class="news_title"><?php echo $title; ?></span> 27 </p> 28 </a> 29 </li> 30 <?php endforeach; ?>

取得したIDがクラスに入るようにし、
<span class="cat-label cat-label-<?php echo $cat; ?>"></span>

cssのbefore要素でテキストが入るように装飾。

css

1.cat-link.cat-link-1::before { 2content: "コラム"; 3color: #fff; 4font-size: 1.1rem; 5padding: 0.2em 0.2em 0; 6line-height: 1.2; 7}

投稿2022/09/15 07:30

編集2022/09/15 07:32
Kanakuwa

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問