この記事にはプロモーションが含まれています。

【WordPress】特定ページのカテゴリーに紐づくタグを一覧表示する方法

【WordPress】特定ページのカテゴリーに紐づくタグを一覧表示する方法

ケケンタ

現在のページのカテゴリーに紐づいたタグ一覧を表示したいけど方法がわからない……!

今回はこのようなお悩みをお持ちの方に向けて

WordPressで特定ページのカテゴリーに紐づく
すべてのタグ一覧を出力する方法

をご紹介します。

ページ種別に関わらずすべてのカテゴリーごとのタグ一覧を出力する方法は以下の記事で解説しています。

ケケンタ

WordPressでは以下のような条件なら簡単に出力が可能です。

  • 投稿に紐づくカテゴリー
  • カテゴリーに紐づく投稿
  • 投稿に紐づくタグ
  • タグに紐づく投稿

しかし、

カテゴリーに紐づくタグ」や「タグに紐づくカテゴリー」を出力する場合、ひと手間必要になります。

ケケンタ

今回はこの内、特定のページのカテゴリーに紐づいているタグの一覧を出力する方法をご紹介します。

目次

Web制作を仕事にしたいなら

こちらの記事で

Web制作コース独学プラン

についてご紹介しています。

 ̄ ̄ ̄

「仕事が忙しい」、「すぐに欲しい商品がある」という方、必見のサービス

 Amazon Prime 

by Amazon

日時指定便が「無料」で使えるので不在で商品を受け取れないという心配が無くなる

最短で注文した「翌日」に商品が届くので欲しいものがすぐ手に入る 
※ご注文の時間帯やお住まいの地域によります。

Amazonプライムの無料体験は「何度でも」利用可能

Amazonプライムの無料体験を何度も利用する方法

  • Amazonのカート画面で表示される「Amazon Primeの無料体験の案内」をクリック
  • 会員の自動更新を解除しておく=期限が来たら自動解約
  • 1~3ヶ月ぐらいするとAmazonのカート画面再度無料体験の案内が表示される

商品をカートに入れ、カート画面に行ったときに「無料体験の案内」が表示されていれば
1ヶ月間の無料体験を受け取ることが可能です。

ケケンタ

僕自身、過去に少なくとも3回は無料体験を利用しています。

※条件は不明ですが、解約後に一定期間が経過すると、再び「Amazon Prime無料体験の案内」が表示され、再度利用することが可能です。

【ソースコード】そのページのカテゴリーに紐づいているタグの一覧を出力する

早速ですが、以下がそのソースコードです。

タグ一覧を表示したい箇所に追加する

<?php 
	/** 
	 * ■ 処理の大枠
	 * 1.そのページのカテゴリー情報を取得
	 * 2.カテゴリーに紐づいている投稿を全取得
	 * 3.2で取得した投稿に紐づいているタグを全取得
	 */

	$html = '';  // HTML出力用変数の初期宣言
	
	/**
	 * 1.そのページのカテゴリー情報を取得
	 */
	$category = get_the_category()[0];

	// HTML先頭
	$html = '<div>';

	/**
	 * 2.カテゴリーに紐づいている投稿を全取得
	 */
	$args = [
		'category' => $category->term_id,
        'posts_per_page' => -1 // 取得投稿数を「全件」にする ※デフォルトだと5件なので注意
	];
	$category_posts = get_posts( $args );

	// カテゴリーリンクをHTMLに配置
	$html .= '<p><a href="'. get_category_link( $category->term_id ) . '">'. $category->name . '</a></p>';

	/**
	 * 3.2で取得した投稿に紐づいているタグを全取得
	 */
	// タグ重複チェック用配列
	$checked_tag = array();
	foreach( $category_posts as $cat_post ){

		// 各記事のタグを全出力する
		$tags = get_the_tags($cat_post->ID);
		/**
		 * 3-2.記事にタグが登録されているか判定し、登録されていれば全てのタグをリンクとして出力する
		 */
		if( $tags ){  							
			foreach( $tags as $tag ){
				if( in_array( $tag->name, $checked_tag) ){
					// 重複しているタグはスキップ
					continue;
				} else {
					// タグ重複チェック用
					array_push( $checked_tag, $tag->name );

					// タグリンクをHTMLに配置
					$html .= '<p><a href="'. get_tag_link( $tag->term_id ) . '">' . $tag->name . '</a></p>';
				}
			}
		}
	}
	// HTMLを出力
	$html .= "</div>";
	echo $html;
?>

HTMLはハイライト行で生成しています。
レイアウト調整したい場合はその辺りをいじっていただき、CSSをお当て下さい。

出力の様子

カテゴリーに紐づくタグ一覧を出力
カテゴリーに紐づくタグ一覧を出力

上記のソースコードで出力されるHTMLの構成

<div>
  <p><a href="カテゴリーアーカイブページへのリンク">カテゴリ2</a></p>
  <p><a href="タグアーカイブページへのリンク">タグ1</a></p>
  <p><a href="タグアーカイブページへのリンク">タグ5</a></p>
  <p><a href="タグアーカイブページへのリンク">タグ2</a></p>
</div>

解説

ケケンタ

基本的にはソースコードに記載してあるコメント自体が解説になっていますが、イメージしづらい部分もあるかと思いますのでもう少しかみ砕いてご説明します。

まず、処理の大枠は次の通りです。

処理の大枠の流れ
  • そのページのカテゴリー情報を取得
  • ①で取得したカテゴリーごとに紐づいている投稿を全取得
  • ②で取得した投稿に紐づいているタグを全取得 → 一覧出力

前述したように、WordPressでは直接「カテゴリー×タグ」のような関係の情報を一発で取得することが難しいです。

しかし、「投稿」を間に介することで「カテゴリー×タグ」の関係性を持つ情報を取得することが可能です。

今回は「カテゴリー」→「投稿」→「タグ」という情報連携により、そのページのカテゴリー情報に紐づいたタグ一覧を取得しています。

また、各投稿で同じタグが登録されているとタグ一覧で重複が発生してしまうため、以下の部分で一度出力したタグは2回目の出現からは出力しないよう制御しています。

ソースコードの以下の部分でタグの重複チェック

<?php 

 ~省略~

		/**
		 * 3.2で取得した投稿に紐づいているタグを全取得
		 */
		// タグ重複チェック用配列
		$checked_tag = array();
		foreach( $category_posts as $cat_post ){

      ~省略~

			/**
			 * 3-2.記事にタグが登録されているか判定し、登録されていれば全てのタグをリンクとして出力する
			 */
			if( $tags ){  							
				foreach( $tags as $tag ){
					if( in_array( $tag->name, $checked_tag) ){
						// 重複しているタグはスキップ
						continue;
					} else {
						// タグ重複チェック用
						array_push( $checked_tag, $tag->name );

						~省略~
					}
				}
			}
		}

    ~省略~

	}
?>

まとめ

以上がWordPressでそのページのカテゴリーに紐づいているタグの一覧を出力する方法でした。

ケケンタ

以前公開した「各カテゴリーに紐づくすべてのタグ一覧を出力する」と同様に、調べてみると以外にも解説記事を見つけることができなかったため記事にまとめてみました。

この記事がお役に立ったなら何よりです。

当ブログではその他にもWordPressやWeb制作、PHPのお役立ち情報を発信しているため、ご興味のある方はぜひ他の記事もご覧いただけると嬉しいです。

それでは、最後までご覧いただきありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次