カスタムフィールドテンプレートを使用して、
yyyy年mm月dd日と表示される項目を作成しました。
上記からyyyy年だけを取り出して、サイドバーに
年別のアーカイブリストとして表示させ、かつ
それぞれの年別記事アーカイブへリンクしたいです。
下記トピックに限りなく近いと思い
ソースをさわってみたのですが、行き詰ってしまいました。
http://ja.forums.wordpress.org/topic/3700
ヒントをいただければと思います。
よろしくお願いいたします。
カスタムフィールドテンプレートを使用して、
yyyy年mm月dd日と表示される項目を作成しました。
上記からyyyy年だけを取り出して、サイドバーに
年別のアーカイブリストとして表示させ、かつ
それぞれの年別記事アーカイブへリンクしたいです。
下記トピックに限りなく近いと思い
ソースをさわってみたのですが、行き詰ってしまいました。
http://ja.forums.wordpress.org/topic/3700
ヒントをいただければと思います。
よろしくお願いいたします。
つくってみました。お試しください◎
WordPress でカスタムフィールドの日付から年別アーカイブリストを作成する
kzさん
ありがとうございます!
まさか記事にしていただけるとは思いもよりませんでした。
さっそく、教えていただいたソースの'data'を
'カスタムフィールドのキー'に変更してfunctions.phpに貼り付け、
sidebar.phpには下記の記述を追加しました。
<?php
my_get_year_archives( array(
'date_field' => 'カスタムフィールドのキー',
) );
?>
ところが、ブラウザで確認したところ、
下記のように一部のソースが表示されてしまいました。
---------------------------------------------------------------
SELECT SUBSTRING(m.meta_value,1,4) AS year, count(p.ID) AS posts FROM wp_2_posts AS p INNER JOIN wp_2_postmeta AS m ON m.post_id = p.ID WHERE p.post_type = 'post' AND p.post_status = 'publish' AND m.meta_key = 'カスタムフィールドのキー' GROUP BY SUBSTRING(m.meta_value,1,4) ORDER BY m.meta_value DESC array(2) { [0]=> object(stdClass)#4227 (2) { ["year"]=> string(4) "2011" ["posts"]=> string(1) "2" } [1]=> object(stdClass)#4226 (2) { ["year"]=> string(4) "2010" ["posts"]=> string(1) "1" } }
2011年
2010年
---------------------------------------------------------------
基礎が全くない状態なので、
初歩的なところで間違えているのかもしれません。
たびたび申し訳ございませんが、
誤りがあればご指摘いただければと思います。
よろしくお願いいたします。
あ、すみません!デバッグ用のコードが残ってました。。
echo $query;
var_dump($arcresults);
は削除してください◎
※記事を修正しましたので、再度コピペしていただいても OK です。
※念のため:'カスタムフィールドのキー'は英数字にしていただくと安心です。
さっそくありがとうございます!
試したところソース部分は見えなくなりました。
ただ、出力されたリンク先に飛ぶと、年に関わらず、
全ての記事が表示されてしまいます。
出力されているのは、このようなURLです。
http://○○○/2011/?meta_key=(仮)カスタムフィールドのキー
別途、archive.phpへの記載などが必要でしょうか?
下記のようにソートするタグは入れています。
<?php query_posts('meta_key=(仮)カスタムフィールドのキー&orderby=meta_value'); ?>
query_posts() の記述は不要です。
いきなり WordPress ループを始めれば OK です。
date.php --> archive.php --> index.php の順に適用されますので
どれかに処理を書くか if ( is_year() ) で処理を分岐すれば良いです。
できました!
こういう場面は多そうなのに、検索しても
あまり事例が出ておらずあきらめかけていました。
勉強して応用できるようにしたいと思います。
本当にありがとうございました。
始めまして。
この機能とても欲しく
トライしたのですが、私も
リンク先に飛ぶと、年にかかわらず、全ての記事が表示されてしまいました。
WordPress ループ をいきなり始めたつもりなのですが、
やり方が悪いためか、うまくいきません。
この部分のやり方を詳しくお聞かせ頂けると幸いです。
上記について サイド実行したら上手くいきました。
失礼しました。
ログイン しなければ投稿できません。