質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4193閲覧

wordpress カスタム投稿&カテゴリー毎の月次アーカイブの作り方

u-sukesan

総合スコア156

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/12/20 06:20

wordpressにてオリジナルテーマを作っていますが
カスタム投稿&カテゴリー毎の月次アーカイブの作り方

を検索中ですが、
「カスタム投稿の月次アーカイブ」
「カテゴリー毎の月次アーカイブ」
などはそれぞれあるんですが、

カスタム投稿のカテゴリー毎の月次アーカイブの記事が見つけられずに
困っています。

function.phpに

function my_custom_post_type_archive_where( $where, $args ){ $post_type = isset( $args['post_type'] ) ? $args['post_type'] : 'post'; $cat = isset( $args['cat'] ) ? $args['cat'] : 'cat'; $where = "WHERE post_type = '$post_type' AND cat = '$cat' AND post_status = 'publish'"; return $where; } add_filter( 'getarchives_where', 'my_custom_post_type_archive_where', 10, 2 );

とし、表示側に

<?php $cate_id=表示中の記事のカテゴリID $args = array( 'post_type' => 'voices', 'type' => 'monthly', 'cat'=>$cate_id, 'echo' => 0 ); $list = wp_get_archives($args); echo "<ul class='archivesog'>$list</ul>"; ?>

としてみました。

がうまく表示されませんでした。
ご教授orおすすめ記事を教えていただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/20 08:11 編集

カスタム投稿にカスタム分類を結びつけているのではなく、「既存のカテゴリー(category)」を結びつけて使っているという認識でよろしいですか?
u-sukesan

2016/12/20 09:30

説明不十分で申し訳ございません。その認識で問題ございません
guest

回答1

0

ベストアンサー

回答に間違いがあったため、ソースコードを全面的に修正しました!(2017/02/09)

以下のコードをfunctions.phpに記載してください。
表示側は質問者様が準備されたコードのままでOKです。

PHP

1function my_getarchives_where( $where, $args ){ 2 global $my_wp_get_archives_cat; 3 4 $my_wp_get_archives_cat = isset( $args['cat'] ) ? $args['cat'] : ''; 5 6?><pre><?php 7var_dump($my_wp_get_archives_cat); 8?></pre><?php 9 10 if(!empty($my_wp_get_archives_cat)){ 11 $where = $where . " AND terms.term_id = '" . $my_wp_get_archives_cat . "'"; 12 } 13 14?><pre><?php 15var_dump($where); 16?></pre><?php 17 18 return $where; 19} 20add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 ); 21 22function my_getarchives_join($join, $args){ 23 global $wpdb; 24 25 $join = " LEFT JOIN $wpdb->term_relationships as r ON $wpdb->posts.ID = r.object_ID 26 LEFT JOIN $wpdb->term_taxonomy as t ON r.term_taxonomy_id = t.term_taxonomy_id 27 LEFT JOIN $wpdb->terms as terms ON t.term_id = terms.term_id"; 28 29?><pre><?php 30var_dump($join); 31?></pre><?php 32 33 return $join; 34} 35add_filter('getarchives_join', 'my_getarchives_join', 10, 2); 36 37function my_month_link($url, $year){ 38 global $my_wp_get_archives_cat; 39 40?><pre><?php 41var_dump($my_wp_get_archives_cat); 42?></pre><?php 43 44 if( !empty($my_wp_get_archives_cat) ) { 45 $url = add_query_arg( 'cat', $my_wp_get_archives_cat, $url); 46 } 47 48?><pre><?php 49var_dump($url); 50?></pre><?php 51 52 return $url; 53} 54add_filter('month_link', 'my_month_link', 10, 2);
  • wp_get_archives()内のフィルターフックgetarchives_wheregetarchives_joinで、

WHERE句とJOIN句を書き換えてます。

  • wp_get_archives()内で使われているget_month_link内のフィルターフックmonth_link

URLにクエリストリングを追加しています。

  • グローバル変数$my_wp_get_archives_catを作成し、使用しています。

?><pre><?phpから?></pre><?phpの部分はデバッグ用なので削除して使ってください。

参考URL
テンプレートタグ/wp get archives - WordPress Codex 日本語版
general-template.php in tags/4.7/src/wp-includes – WordPress Trac
データベース構造 - WordPress Codex 日本語版
WordPress plugin Archives for a category | kwebble.com
WordPress - wordpressにてカスタム投稿をカテゴリ指定して年別で出力したい。(65033)|teratail

投稿2016/12/20 12:32

編集2017/02/09 12:21
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u-sukesan

2017/02/23 05:40

お返事が遅くなりました。 ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問