マーカーネット株式会社

WEB制作ブログ WEBデザイン、HTMLコーディング、PHP、スマートフォン制作などWEB制作全般に役立つ情報を発信していきます。

WordPress

【WordPress】カスタム投稿でタクソノミーのタームごとに月別アーカイブをなんとか表示させる方法。

投稿日:2014年6月11日 更新日:

WordPressでWEB制作時にカスタム投稿を用いている場合、
タクソノミーのタームごとに月別アーカイブを表示させたい場合がございます。
本日はその方法のご紹介です。

以下のような形式で月別アーカイブを表示させるには
wp_get_archives関数を使用されるかと思いますが、さらにfunctions.php 内でfilterを利用します。

例)

・2014年
 6月
 5月
・2013年
 12月
 11月

1)functions.php ファイルに下記のフィルターを追記します。
========================================
add_filter( ‘getarchives_join’, ‘my_getarchives_join’, 10, 2 );
function my_getarchives_join( $join, $r ) {
 global $wpdb;
 if ( isset( $r[‘taxonomy’] ) ) {
  $join .= ” LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) “;
  $join .= ” LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) “;
  $join .= ” LEFT JOIN $wpdb->terms ON ($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) “;
 }
 return $join;
}

add_filter( ‘getarchives_where’, ‘my_getarchives_where’, 10, 2 );
function my_getarchives_where( $where, $r ) {
 global $wpdb;
 if ( isset( $r[‘taxonomy’] ) ) {
  $where .= $wpdb->prepare( ” AND $wpdb->term_taxonomy.taxonomy = %s “, $r[‘taxonomy’] );
  }
 if ( isset( $r[‘slug’] ) ) {
  $where .= $wpdb->prepare( ” AND $wpdb->terms.slug = %s “, $r[‘slug’] );
 }
 return $where;
}
========================================

2)表示させたいテンプレートにて下記のように’slug’に特定したいタームのスラッグを
条件に入れwp_get_archives 関数追記します。

$args = array(
 ’post_type’ => ‘カスタム投稿’,
 ’taxonomy’ => ‘タクソノミー’,
 ’slug’ => ’タクソノミーのターム’,// slug はfunctions.phpのfilter
 ’type’ => ‘monthly’,
 ’show_post_count’ => false,
 ’echo’ => 0 //
);
$archives_month = strip_tags(wp_get_archives($args));

URLのパーマリンクでは、月別ページのページ遷移後に、
タームの値を引き継ぐよう工夫が必要となりますが、
これでfilterはうまくできるかと思います。

-WordPress

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Alt 【WordPress】カスタムフィールドで何でも出来る!カスタムフィールドの便利な使い方 その1

【WordPress】カスタムフィールドで何でも出来る!カスタムフィールドの便利な使い方 その1

WordPressでサイトを作る場合カスタムフィールドがとても便利ですよね! そして投稿ページで入力したカスタムフィールドの値を他のトップページや固定ページでも使いたい。なんて事があるかと思います。 …

wpdbは使わず、WordPressのデータベースから直接データを取得する方法

wpdbは使わず、WordPressのデータベースから直接データを取得する方法

今回は、wordpressのwpdbを利用できない環境で、phpのPDOを利用し、 selectする方法をご紹介いたします。 WordPressのサイトからフォームに記事IDとともに遷移し、フォームに …

ワードプレスの高負荷プラグインを可視化してくれるプラグイン

WordPressのプラグインは便利ですが、ついつい多用してしまいますと サイト全体のレスポンスが悪くなり、表示速度の低下を招いてしまいます。 そのような状態ではもはやプラグインの数が多すぎて、何を排 …

予約投稿を失敗しないドクターX的ワードプレスプラグイン

WordPressには未来の日時を指定して公開する予約投稿機能がございます。 組織で運用するブログなどでは時間を決めて記事を公開することが重要になることが多々あるようです。 ただし、WordPress …

FacebookとWordPressを連携させる方法

『WordPressで記事を投稿したタイミングで、Facebookにも反映させる方法』ですが、 頻繁に起こるFacebookの仕様変更や、WordPressプラグイン自体の更新停止などで 今までのやり …