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

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

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

ケケンタ

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

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

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

をご紹介します。

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

ケケンタ

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

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

しかし、

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

ケケンタ

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




ケケンタ

ケケンタのITブログでは、WebアプリPHPLaravel)やWeb制作WordPressコーディング)について情報を発信しています。
学習中の方や実務をされている方など多くの方にアクセスいただいていますので、ぜひほかの記事も参考にしてみてください!


運動不足、気になっていませんか?

もしプログラミング学習やお仕事で運動不足が気になっているなら
連続屈伸運動がおすすめです!

ボタンにカーソルを合わせるだけ
カウントダウンが始まるタイマーをご用意してみました!

ケケンタ

無理のない範囲で、ぜひ隙間時間に屈伸運動を取り入れてみて下さい!

タイマースタート

3:00

※運動不足だと連続3分で取り組んでもかなり息が切れます
(僕は加えて気分もちょっと悪くなりました……)
絶対にご無理の無い範囲でお取り組みください!


目次

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

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

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

<?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のお役立ち情報を発信しているため、ご興味のある方はぜひ他の記事もご覧いただけると嬉しいです。

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

WordPressで特定ページのカテゴリーに紐づくタグを一覧表示する方法のアイキャッチ画像

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!

コメント

コメントする

CAPTCHA


目次