フォーラム

[解決済み] カスタムフィールドの日付から年別アーカイブリストを作成 (9 件の投稿)

  1. yd2
    メンバー
    6 months前の投稿 #

    カスタムフィールドテンプレートを使用して、
    yyyy年mm月dd日と表示される項目を作成しました。

    上記からyyyy年だけを取り出して、サイドバーに
    年別のアーカイブリストとして表示させ、かつ
    それぞれの年別記事アーカイブへリンクしたいです。

    下記トピックに限りなく近いと思い
    ソースをさわってみたのですが、行き詰ってしまいました。
    http://ja.forums.wordpress.org/topic/3700

    ヒントをいただければと思います。
    よろしくお願いいたします。

  2. kz
    メンバー
    6 months前の投稿 #

  3. yd2
    メンバー
    6 months前の投稿 #

    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年
    ---------------------------------------------------------------

    基礎が全くない状態なので、
    初歩的なところで間違えているのかもしれません。
    たびたび申し訳ございませんが、
    誤りがあればご指摘いただければと思います。

    よろしくお願いいたします。

  4. kz
    メンバー
    6 months前の投稿 #

    あ、すみません!デバッグ用のコードが残ってました。。

    echo $query;
    var_dump($arcresults);

    は削除してください◎

    ※記事を修正しましたので、再度コピペしていただいても OK です。
    ※念のため:'カスタムフィールドのキー'は英数字にしていただくと安心です。

  5. yd2
    メンバー
    6 months前の投稿 #

    さっそくありがとうございます!

    試したところソース部分は見えなくなりました。
    ただ、出力されたリンク先に飛ぶと、年に関わらず、
    全ての記事が表示されてしまいます。

    出力されているのは、このようなURLです。
    http://○○○/2011/?meta_key=(仮)カスタムフィールドのキー

    別途、archive.phpへの記載などが必要でしょうか?
    下記のようにソートするタグは入れています。
    <?php query_posts('meta_key=(仮)カスタムフィールドのキー&orderby=meta_value'); ?>

  6. kz
    メンバー
    6 months前の投稿 #

    query_posts() の記述は不要です。
    いきなり WordPress ループを始めれば OK です。

    date.php --> archive.php --> index.php の順に適用されますので
    どれかに処理を書くか if ( is_year() ) で処理を分岐すれば良いです。

  7. yd2
    メンバー
    6 months前の投稿 #

    できました!

    こういう場面は多そうなのに、検索しても
    あまり事例が出ておらずあきらめかけていました。
    勉強して応用できるようにしたいと思います。
    本当にありがとうございました。

  8. kura
    メンバー
    5 months前の投稿 #

    始めまして。
    この機能とても欲しく
    トライしたのですが、私も
    リンク先に飛ぶと、年にかかわらず、全ての記事が表示されてしまいました。

    WordPress ループ をいきなり始めたつもりなのですが、
    やり方が悪いためか、うまくいきません。

    この部分のやり方を詳しくお聞かせ頂けると幸いです。

  9. kura
    メンバー
    4 months前の投稿 #

    上記について サイド実行したら上手くいきました。
    失礼しました。

返信

ログイン しなければ投稿できません。

About this Topic