このページにはプロモーションが含まれています。
はじめに
今回は、こちらの本でWordPressの勉強中に、サンプルをアレンジしてみたことについて書きました。
「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」[第3版]水野史土(著)
WordPressの記事一覧で、投稿タイプ別に記事一つひとつに
カテゴリーや年別・月別アーカイブ、投稿数を表示したい方
アーカイブ表示の勉強中に、
「記事一覧の一つひとつにカテゴリーや年別・月別の表示をするには、どうやるんだろう?」
「さらに投稿数を表示するには、どうするんだろう?」
こんな疑問が浮かんできました。
WordPressの勉強はこの本が初めてだったので、
手探り状態でたくさん調べ、悩みながらなんとか形にしました。
たくさん調べてみたところ、
私がやろうとしていることが全然見つからなかったので、
同じようなことを探している方がもしいたら、
参考になるのではと思い、今回の記事を書きました。
結果画面
投稿の一覧ページ(抜粋)
カスタム投稿の一覧ページ(抜粋)
プログラムの前提条件
このプログラムは、投稿とカスタム投稿でそれぞれ分けて、リスト形式ではなく、記事一つひとつにカテゴリーや年別・月別アーカイブ、投稿数を表示させるものです。
カスタム投稿名は「news」です。
excerpt.phpファイルはテンプレートファイルです。
記事を表示するループ処理内で、get_template_part(‘excerpt’)のようにして、
パーツファイルを読み込んでください。
ソースコード
投稿タイプ別に年・月を表示させる関数
//投稿タイプ別に年・月を表示させる関数
function by_type_date($post_type = "post")
{
$current_year = get_the_date('Y');
$current_month = get_the_date('n');
$args = array(
'post_type' => $post_type,
'posts_per_page' => -1,
'date_query' => array(
array(
'year' => $current_year,
'month' => $current_month,
),
),
);
$query = new WP_Query($args); //年と月
$args = array(
'post_type' => $post_type,
'posts_per_page' => -1,
'date_query' => array(
array(
'year' => $current_year,
),
),
);
$query_year = new WP_Query($args); //年
if ('news' === get_post_type()) {
$args = array(
'type' => 'yearly', // 種類を指定。
'post_type' => 'news', // カスタム投稿タイプを指定。
'echo' => false, // 値を出力するではなく、取得する。
// →str_replace関数で情報を更新するため。
);
echo '<span>年別:';
$year_url = esc_url(get_year_link($current_year));
echo '<a href="/archives/date/' . $current_year . '?post_type=news ">' . $current_year . '年' . '</a>';
echo '(' . count($query_year->posts) . ')';
echo '</span>';
echo '<span>月別:';
$month_url = esc_url(get_month_link($current_year, $current_month));
echo '<a href="/archives/date/' . $current_year . '/' . $current_month . '?post_type=news">' . $current_year . '年' . $current_month . '月' . '</a>';
echo '(' . count($query->posts) . ')';
echo '</span>';
} else {
echo '<span>年別:';
$year_url = esc_url(get_year_link($current_year));
echo '<a href="' . $year_url . '">' . $current_year . '年' . '</a>';
echo '(' . count($query_year->posts) . ')';
echo '</s>';
echo '<span>月別:';
$month_url = esc_url(get_month_link($current_year, $current_month));
echo '<a href="' . $month_url . '">' . $current_year . '年' . $current_month . '月' . '</a>';
echo '(' . count($query->posts) . ')';
echo '</span>';
}
}
投稿タイプ別にカテゴリーを表示
カテゴリーを表示し、上記の関数を呼び出して、年・月、投稿数を表示します。
<?php
if ('post' === get_post_type()) {
$cateName = get_the_category()[0]->cat_name;
$cateCount = get_the_category()[0]->category_count;
the_category(', ');
echo ':';
echo '(' . $cateCount . ')';
echo by_type_date();
} elseif (!empty($term)) {
$terms = get_the_terms($post->ID, 'news-cat');
foreach ($terms as $term) {
$link = get_term_link($term->term_id, 'news-cat');
echo '<a href="' . $link . '">' . $term->name . ' </a>' . ':' . '(' . $term->count . ')';
by_type_date('news');
}
} else {
echo 'カテゴリーが未分類です';
by_type_date('news');
}
?>
<?php the_tags('<span class="tags-links">タグ: ', ', ', '</span>'); //タグを表示
?>
おわりに
今回はWordPress初心者がサンプルコードをアレンジしたものをご紹介しました。
この記事がお役に立てれば嬉しいです。
この記事の内容はこちらの本で勉強しました🔽
コメント