デイトラでプログラミング始めました

投稿一覧をフィルタリングして表示 front-page.php

フィルタリングしたいカテゴリーを選択する(今回はnewsでやります。)

$term_obj = get_term_by('slug','news','category');

このコードがやっていること

このコードは、WordPress のデータベースから特定のターム(用語)を取得する処理を行っています。

  • get_term_by() 関数:
    • WordPress の組み込み関数で、指定した条件に一致する単一のタームを取得します。
  • 引数:
    • 'slug': タームを検索する際に使用するフィールドを指定します。ここでは、タームのスラッグ(URL で使用される一意な文字列)で検索することを意味します。その他(ID,slug,name)
    • 'news': 検索するタームのスラッグです。この場合は、「news」というスラッグを持つタームを探します。
    • 'category': 検索対象のタクソノミーを指定します。ここでは、「カテゴリー」タクソノミーから検索することを意味します。
  • $term_obj 変数:
    • 検索結果のタームオブジェクトが格納されます。このオブジェクトには、タームの ID、名前、スラッグなどの情報が含まれています。

コードの具体的な動作

  1. データベース検索: WordPress のデータベースから、スラッグが「news」で、カテゴリータクソノミーに属するタームを探します。
  2. タームオブジェクトの作成: 見つけたタームの情報をもとに、タームオブジェクトを作成します。
  3. 変数への格納: 作成されたタームオブジェクトを $term_obj 変数に代入します。

使用例

PHP

// タームオブジェクトを取得
$term_obj = get_term_by('slug','news','category');

// タームが存在する場合
if ( $term_obj ) {
    // ターム名を表示
    echo $term_obj->name;

    // タームのリンクを表示
    echo '<a href="' . get_term_link( $term_obj ) . '">' . $term_obj->name . '</a>';
} else {
    echo '「news」というカテゴリーは見つかりませんでした。';
}

選択したカテゴリーに飛ぶ

<button type="button" class="button button-ghost"
  onclick="javascript:location.href = '<?php echo esc_url(get_term_link($term_obj)); ?>';">
  <?php echo $term_obj->name ?>一覧を見る
</button>

投稿一覧をフィルタリング

function get_specific_posts( $post_type, $taxonomy = null, $term = null, $number = -1 ) {
	if ( ! $term ):
		$terms_obj = get_terms( 'event' );
		$term = wp_list_pluck( $terms_obj, 'slug' );
	endif;

	$args = array(
		'post_type' => $post_type,
		'tax_query' => array(
			array(
				'taxonomy' => $taxonomy,
				'field' => 'slug',
				'terms' => $term,
			),
		),
		'posts_per_page' => $number,
	);
	$specific_posts = new WP_Query( $args );
	return $specific_posts;
}

get_specific_posts() 関数の詳細解説

この関数の役割

get_specific_posts() 関数は、WordPress の投稿を、指定された条件に基づいて取得するためのカスタム関数です。この関数を使うことで、特定の投稿タイプ、タクソノミー、タームを持つ投稿を柔軟に抽出することができます。

引数

  • $post_type: 取得したい投稿の種類 (例: ‘post’, ‘page’, ‘product’)
  • $taxonomy: フィルターに使用するタクソノミー (例: ‘category’, ‘post_tag’, ‘product_cat’)
  • $term: フィルターに使用するタームのスラッグ
  • $number: 取得する投稿数。負の値を指定すると、すべての該当する投稿を取得します。

処理の流れ

  1. デフォルトのターム:
    • $term が指定されていない場合、デフォルトで ‘event’ タクソノミーのすべてのタームが使用されます。つまり、イベント関連の投稿が取得されるように設定されています。
  2. クエリ引数の作成:
    • WP_Query オブジェクトに渡す引数を作成します。
      • post_type: 取得する投稿タイプ
      • tax_query: タクソノミーとタームに基づいたクエリ
      • posts_per_page: 取得する投稿数
  3. WP_Query 実行:
    • 作成した引数を使って WP_Query を実行し、指定された条件に合致する投稿を取得します。
  4. 結果の返却:
    • 取得した投稿を含む WP_Query オブジェクトを返します。

使用例

PHP

// イベント関連のすべての投稿を取得
$event_posts = get_specific_posts('post', 'event');

// 'product' 投稿タイプのうち、'featured' カテゴリーに属する最初の5件を取得
$featured_products = get_specific_posts('product', 'product_cat', 'featured', 5);

// 'page' 投稿タイプのすべての投稿を取得 (デフォルトのタームは使用されない)
$all_pages = get_specific_posts('page');

この関数の利点

  • 柔軟性: 様々な条件で投稿を取得できる
  • カスタマイズ性: デフォルトの動作を変更して、より複雑なクエリを作成できる
  • 再利用性: さまざまな場面で繰り返し使用できる

get_specific_posts() 関数は、WordPress の投稿を柔軟に取得するための強力なツールです。この関数を理解し、適切に活用することで、より動的なウェブサイトを作成することができます。