- ページ内で繰り返し使うパーツをコンポーネント化して再利用するのに役立つ
get_template_part()
- ただ、取り出した情報を、取り出す場所によって変えたい時(例えば、表示件数を変えたり、ソート順を変えたりなど)に柔軟に対応できない
- と思っていたら、バージョン 5.5 から
get_template_part()
に引数を渡せるようになっていたらしい
試しにカテゴリー一覧リンクの表示形式を変えてみる
- サイドバーに表示するカテゴリー一覧だけ「投稿件数を表示」したかったので、当該部分で呼び出すファイルに以下のような感じで書く
<?php // カテゴリー一覧
$args = ['pad_counts' => true];
get_template_part('tmp/categories-link', null, $args); ?>
- 上記で、例えばモーダルウィンドウでは件数表示が不要なら
'pad_counts' => false
と記述すればよいことになる - 続いて、呼び出される側の
tmp/categories-link.php
<?php if ( !defined( 'ABSPATH' ) ) exit; ?>
<?php // カテゴリー
$args = array(
'parent' => 0, // 親カテゴリーのみ一覧で取得
'orderby' => 'term_order',
'order' => 'ASC',
'hide_empty' => false, // 記事のないカテゴリーも含める
'exclude' => 1, // 「未分類」のカテゴリーを除外
'pad_counts' => $args['pad_counts'], // 記事数のカウント表示の有無(引数で取得する)
);
$categories = get_categories( $args );
?>
<nav class="categories-link">
<ul class="categories-link__ul">
<?php foreach( $categories as $category ) : ?>
<li class="categories-link__list">
<a class="categories-link__href" href="<?php echo get_category_link( $category->term_id ); ?>">
<?php if($args['pad_counts'] == true): ?>
<?php echo $category->name; ?> (<?php echo $category->count; ?>)
<?php else: ?>
<?php echo $category->name; ?>
<?php endif; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</nav>
- 引数として受け取った値を配列に入れ、その結果をまた返してくれるといったニュアンスなので、
WP Query
を駆使したサイトなどでは必須の機能と言えるかもしれない
参考