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

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

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

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

PHP

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

Q&A

解決済

1回答

1698閲覧

複数のカスタム投稿をまとめた年別アーカイブを作成したい

neko_cat

総合スコア14

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/08/02 09:12

wordpressでサイトを制作しており、
トップページ(index.php)に、複数のカスタム投稿をまとめた年別アーカイブを作成したいと思っています。

これまで主に以下のソースで実装をこころみましたが、
wp_get_archives() では、複数の投稿タイプを指定することができないらしく、
つまずいている状態です。

<?php   wp_get_archives(array(   ’post_type’ => ‘example’,   ’type’ => ‘yearly’,   ’show_post_count’ => 0   ));  ?>

補足
以前このフォーラムで同様の質問をされていた方がおられましたが、
内容のレベルが高く、自分のサイトに応用することができませんでした。
勉強不足で申し訳ないのですが、噛み砕いて教えていただけると大変助かります。

WPの月別アーカイブを複数のカスタム投稿が混在した形で表示したい

ヒントになりそうなことだけでも結構ですので、ご教示いただければ幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

動く保証はありませんが Gist で使えそうな関数がシェアされてましたのでリンク貼っておきます。
これを functions.php に直接貼るか、別ファイルにして functions.php から include するかして使えば良いのではないでしょうか。

php

1<?php 2dg_wp_get_archives(array( 3  'post_type' => array( 'example-1', 'example-2' ), 4  'type' => 'yearly', 5  'show_post_count' => 0, 6));

追記

php

1<?php 2function archives_pre_get_posts( $query ) { 3 if ( $query->is_year() && $query->is_main_query() ) { 4 $query->set( 'post_type', array( 'example-1', 'example-2', 'example-3' ) ); 5 $query->set( 'showposts', -1 ); 6 } 7} 8add_action( 'pre_get_posts', 'archives_pre_get_posts' );

投稿2018/08/02 11:34

編集2018/08/04 14:30
yhg

総合スコア2161

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

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

neko_cat

2018/08/04 14:16

情報ありがとうございます! お返事が遅くなって申し訳ありません。 アドバイスいただいた通り、dg_wp_get_archives.php を functions.php で include して、貼って下さったソースで実装してみました。 確かに、トップページに年間アーカイブのリストは表示できました。 が、リストのリンク先のアーカイブページで、きちんと記事一覧が表示されませんでした。 具体的には、以下のような状態になってしまいます。 ・2018年のアーカイブページで、2018年の記事だけでなく、それ以前の記事も表示される。 ・2018年以前のアーカイブページ(2017年、2016年、、、)で、記事が一切表示されない。 ちなみに、アーカイブページは index.php に、以下のソースで実装しています。 <?php if(is_year()): ?> <?php $yearlist = array( 'post_type' => array(  'example-1',  'example-2',  'example-3', ), 'showposts' => -1, ); ?> <?php query_posts($yearlist); ?> <?php if (have_posts()):while(have_posts()):the_post(); ?> <ul> <li> <a href="<?php the_permalink() ?>" rel="bookmark"> <?php the_post_thumbnail('thumbnail'); ?> <?php the_title_attribute(); ?> <?php the_time('Y年n月j日'); ?> <?php the_excerpt(); ?> </a> </li> </ul> <?php endwhile; endif; ?> <?php endif; ?> 解決策がありましたら、ご教示いただけると助かります。
yhg

2018/08/04 14:31

その記述ですと絞り込み条件が投稿タイプと表示件数だけになってしまい、日付などの条件が消えてしまいます。追記したコードのような感じでメインループの条件を変更した上で、query_posts を使うのをやめてみてはどうでしょうか。
neko_cat

2018/08/05 06:59

functions.php に追記して下さったソースを貼り、query_posts をやめてみたところ、できました!バッチリです! 正直、自分の知識では全くお手上げだったので、本当に助かりました。 的確なアドバイス、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問