サポート » 使い方全般 » 投稿をカスタムフィールド値でソートし、更に時系列に並べる

  • 解決済 Mizuho Ogino

    (@fishpie)


    wordpress2.7を使用しています。ファーラムを見て回ったのですが、同様のトピックはないと判断して投稿させていただいております。

    かならず全ての投稿の「period」というカスタムフィールドに「1_continue」や「2_end」などの値が入力されているとします。現状では以下のように「period」の値でソートしています。

    query_posts('&cat='.$cat.'&orderby=meta_value&meta_key=period&order=ASC&posts_per_page=○○&paged='.$paged);

    しかしこれでは各値ごとにソートされても、同じ「1_continue」の値を持った投稿はID順で出力されてしまいます。カスタムフィールドの並び順を維持したまま、同じ値をもつ投稿群を作成日時または更新日時で並べ替えるにはどうしたらいいでしょうか。

    なお、orderbyを複数持たせても上手くいきませんでした。(orderby=dateを加えると、dateのソートが優先されてしまいmeta_valueが無効になるようです。)ページナビゲーションを活かしたいので、ループは分割せずにソートする方法を考えているのですが、困っています。どなたかご助言を頂ければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    fishpieさん、こんにちは。

    query_postsのorderbyには半角スペース区切りで複数の設定が可能です。
    ですので、

    query_posts('&cat='.$cat.'&orderby=meta_value date&meta_key=period&order=ASC&posts_per_page=○○&paged='.$paged);

    と記述すればmeta_value、投稿日順でのソートとなるかと思います。

    トピック投稿者 Mizuho Ogino

    (@fishpie)

    jim912さん、こんにちは。すばやいご返答ありがとうございます。
    コンマやarrayなどいろいろ試したなかに半角スペースもあったのですが、鼻から上手く行くと思ってなかったのか、動作確認が不十分だったようです。(あるいは他のコードに問題があったのかもしれません。)
    jim912さんの仰る通りのコードでまさに望み通りの動作を得ることができました。

    orderby=meta_value date&order=ASC DESC

    基本的な勉強不足をお詫びしますとともに、的確なご助言に感謝いたします。またよろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「投稿をカスタムフィールド値でソートし、更に時系列に並べる」には新たに返信することはできません。