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

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

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

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

Q&A

解決済

1回答

5281閲覧

wordpressにてカスタム投稿をカテゴリ指定して年別で出力したい。

HiGE82000

総合スコア13

WordPress

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

0グッド

1クリップ

投稿2017/02/08 02:19

編集2017/02/08 07:35

###前提・実現したいこと
wordpressにて
カスタム投稿のカテゴリ別年別アーカイブをドロップダウンメニューに出力、記事の絞り込みをしたいです。
初心者でとんちんかんな質問ですと申し訳ないですが、どなたかご教示いただけないでしょうか?

###発生している問題・エラーメッセージ
カスタム投稿アーカイブページ
archive-specialtopics.phpでは
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>

<option value=""><?php echo attribute_escape(__('年度別')); ?></option> <?php wp_get_archives('type=yearly&post_type=specialtopics&format=option&show_post_count=1'); ?> </select> でうまく機能しております。 しかし、タクソノミーページ taxonomy-specialtopics_cat.phpでは <select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo attribute_escape(__('年度別')); ?></option> <?php wp_get_archives('type=yearly&taxonomy=specialtopics_cat&format=option&show_post_count=1'); ?> </select> で取得もできず、リンクもうまくいきません。 ページ自体は下記のURLで表示されています。 http://●●●.jp/specialtopics_cat/a1/date/2014 ``` エラーメッセージ ```

###該当のソースコード

<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo attribute_escape(__('年度別')); ?></option> <?php wp_get_archives('type=yearly&taxonomy=specialtopics_cat&format=option&show_post_count=1'); ?> </select>

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答1

0

ベストアンサー

wp_get_archives()のドキュメントを読んでいただくとわかりますが、
この関数では、カテゴリーなどのタクソノミーを指定することはできません。

したがって、カテゴリ別の年月アーカイブを作るには、functions.phpなどへ
コードを追加する工夫が必要になります。

参考URL

  • テンプレートタグ/wp get archives - WordPress Codex 日本語版

http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_get_archives

###追記
以前も似たような質問を見て、回答した気がするなあと探してみたらありました。

  • PHP - wordpress カスタム投稿&カテゴリー毎の月次アーカイブの作り方(59475)|teratail

https://teratail.com/questions/59475

###追記2
前にあげた回答がよくなかったので、書き直しました。
以下で試してみてください。
?><pre><?phpから?></pre><?phpの部分はデバッグ用なので最終的には削除してください。

####taxonomy-specialtopics_cat.phpに記述

PHP

1<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> 2<option value=""><?php echo attribute_escape(('年度別')); ?></option> 3<?php wp_get_archives('type=yearly&post_type=specialtopics&format=option&show_post_count=1'); ?> 4</select>

####functions.php

PHP

1function my_getarchives_where( $where, $args ){ 2 $taxonomy = get_query_var('taxonomy'); 3 $term = get_query_var('term'); 4 5?><pre><?php 6var_dump($taxonomy); 7var_dump($term); 8?></pre><?php 9 10 if(!empty($taxonomy)){ 11 $where = $where . " AND t.taxonomy = '" . $taxonomy . "'"; 12 } 13 if(!empty($term)){ 14 $where = $where . " AND terms.slug = '" . $term . "'"; 15 } 16 17?><pre><?php 18var_dump($where); 19?></pre><?php 20 21 return $where; 22} 23add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 ); 24 25function my_getarchives_join($join, $args){ 26 global $wpdb; 27 28 $join = " LEFT JOIN $wpdb->term_relationships as r ON $wpdb->posts.ID = r.object_ID 29 LEFT JOIN $wpdb->term_taxonomy as t ON r.term_taxonomy_id = t.term_taxonomy_id 30 LEFT JOIN $wpdb->terms as terms ON t.term_id = terms.term_id"; 31 32?><pre><?php 33var_dump($join); 34?></pre><?php 35 36 return $join; 37} 38add_filter('getarchives_join', 'my_getarchives_join', 10, 2); 39 40function my_year_link($url, $year){ 41 42 $taxonomy = get_query_var('taxonomy'); 43 $term = get_query_var('term'); 44 45?><pre><?php 46var_dump($taxonomy); 47var_dump($term); 48?></pre><?php 49 50 if( !empty($taxonomy) ) { 51 $url = add_query_arg( 'taxonomy', $taxonomy, $url); 52 } 53 if( !empty($term) ) { 54 $url = add_query_arg( 'term', $term, $url); 55 } 56 57?><pre><?php 58var_dump($url); 59?></pre><?php 60 61 return $url; 62} 63add_filter('year_link', 'my_year_link', 10, 2);

投稿2017/02/08 07:36

編集2017/02/08 13:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

HiGE82000

2017/02/08 08:34 編集

すいません、そちらも拝見させていただいたのですが、 対応方法が分からず質問させていただきました。 functions.phpにご指示いただいたコードを記入後、 プルダウンメニューに出力の際は、 <?php wp_get_archives('type=yearly&taxonomy=specialtopics_cat&format=option&show_post_count=1'); ?> 上記はどのように修正すればよろしいのでしょうか? お手数ではございますが、ご教示お願いいたします。
HiGE82000

2017/02/09 00:05

ありがとうございます。 無事にできました。 無知な質問に丁寧にご回答いただき誠に感謝しております。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問