カスタム投稿タイプのアーカイブリンクについて
-
現在Wordpressのカスタマイズを考えているのです。
そこで、カスタム投稿を研究しているのですが、カスタム投稿を使ったアーカイブリンクについて、わからない事があり質問させていただきました。カスタム投稿タイプには通常のカーかイブをはき出す関数は使えない事はわかりました。
そこで、通常の投稿とカスタム投稿を行った際の違いについて探してみました。
すると、ganaral-template.phpにあるwp_get_archivesメソッドのSQL文に対して、下記の内容で書き加えると、リンクをはき出してくれる事はわかりました。カスタム投稿タイプのpost_typeがnewsだった場合
$where = apply_filters( 'getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r ); "SELECT YEAR(post_date) AS <code>year</code>, MONTH(post_date) AS <code>month</code>, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit"
から下記に変更
$where = apply_filters( 'getarchives_where', "WHERE post_type = 'post' OR post_type='news' AND post_status = 'publish'", $r ); "SELECT YEAR(post_date) AS <code>year</code>, MONTH(post_date) AS <code>month</code>, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit"
ただ、アーカイブリンクは出力されるのですが、リンク先は404になってしまいます。
例えば通常のポストの投稿が11月にあった場合は、post_typeがnewsの場合でも、アーカイブは表示されます。
しかし、通常のポストの11月の投稿がなく、post_typeのnewsだけが11月に投稿があっても404になってしまいます。そこで、色々調べてみたのですが、wp_postsテーブルのpost_dateカラムの日付を基準にしているように思います。
この値に2011-12-○○-○○:○○:○○で、post_typeがpostでステータスがpublishになっていると404にならずに表示される感じです。ここまではわかったのですが、肝心のpost_typeにnewsを指定した場合の解決策がわかりません。
Wordpressはどのようにして、アーカイブリンクを生成?しているのでしょうか?説明がわかりにくくて申し訳ありません。
ちなみにバージョンは3.2.1です。
宜しくお願いします。
- トピック「カスタム投稿タイプのアーカイブリンクについて」には新たに返信することはできません。