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

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

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

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

PHP

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

Q&A

0回答

2599閲覧

カスタム投稿で年度別アーカイブのプルダウン表示をしたい

a_arita

総合スコア4

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/10/10 09:38

wordpress初心者です。
カスタム投稿で「年度別アーカイブ」のプルダウン表示につきまして、ご存じの方がいましたらご教示いただければ幸いです。

eventというカスタム投稿名で、「年別」でのプルダウンでのアーカイブ表示は出来ました。

以下HTML部分

<select id="sel_year" name="year" name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> <?php wp_get_archives('post_type=event&type=yearly&format=option'); ?> </select>

ここから「年度別」にする方法がわかりません。

しらべてみると、通常のpostを年度別にする方法はありました。

該当のソースコード

function query_for_fiscal_year( $where ) {

global $wpdb, $wp_query, $fiscal_year; if ( is_year() ) { $fiscal_year = (int)$wp_query->query_vars['year']; $next_year = $fiscal_year + 1; $where = "

AND ( ( YEAR($wpdb->posts.post_date) = '$fiscal_year' AND
MONTH($wpdb->posts.post_date) BETWEEN '4' AND '12' ) OR ( YEAR($wpdb->posts.post_date) = '$next_year' AND
MONTH($wpdb->posts.post_date) BETWEEN '1' AND '3') ) AND $wpdb->posts.post_type = 'post'
AND ($wpdb->posts.post_status = 'publish' OR $wpdb->posts.post_status = 'private')";
}

return $where;

}

add_action( 'posts_where', 'query_for_fiscal_year' );

function my_get_archives_by_fiscal_year ( $args = '' ) {

global $wpdb, $wp_locale; $defaults = array ( 'post_type' => 'post', 'limit' => '', 'format' => 'html', 'before' => '', 'after' => '', 'show_post_count' => false, 'echo' => 1 ); $r = wp_parse_args( $args, $defaults ); extract ( $r, EXTR_SKIP ); if ( '' != $limit ) { $limit = absint( $limit ); $limit = ' LIMIT ' . $limit; } $output = ''; $arcresults = (array) $wpdb->get_results( "SELECT YEAR(ADDDATE(post_date, INTERVAL -3 MONTH)) AS `year`,

COUNT(ID) AS posts
FROM $wpdb->posts
WHERE post_type = '$post_type' AND post_status = 'publish'
GROUP BY YEAR(ADDDATE(post_date, INTERVAL -3 MONTH))
ORDER BY post_date DESC
$limit"
);

if ( $arcresults ) { $afterafter = $after; foreach ( $arcresults as $arcresult ) { $url = get_year_link( $arcresult->year ); $text = $arcresult->year . '年度'; if ( $show_post_count ) $after = '&nbsp;(' . $arcresult->posts . ')' . $afterafter; $output .= get_archives_link( $url, $text, $format, $before, $after ); } } if ( $echo ) echo $output; else return $output;

}

HTML
select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>

<?php my_get_archives_by_fiscal_year('post_type=post&type=yearly&format=option'); ?> </select>

試したこと

上記のコードで通常のpostは年度別になることは確認できました。

これをベースに、

AND $wpdb->posts.post_type = 'post'

及び

$defaults = array (
'post_type' => 'post',

をカスタム投稿名に変更すれば動くかと思いましたが、動作しませんでした。

どのようにカスタマイズすれば、カスタム投稿でも利用可能でしょうか?

また、上記コード以外でカスタム投稿で年度別にアーカイブをプルダウン形式で表示される方法はございますでしょうか?

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問