• 解決済 WPCO

    (@cocomina)


    よろしくお願いします。

    現在、記事の公開日時でなくカスタムフィールドでのソートがうまく行きません。
    ご教授いただけたら助かります。

    具体的には下記の様なカスタムフィールドを設置しました。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    年を選択するセレクタ:
    key:year

    月を選択するセレクタ:
    key:mouth

    日を選択するセレクタ:
    key:day
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    例:「2015 06 08」、「2015 10 10」 など選択してもらい、この日付の新しい順にソートしたいです。

    通常通り、「公開日時の順番」でのループ出力はできているのですが、
    どうしてもうまく、ソートが行えません。

    下記の方法を試してみたのですがうまく行きません。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    `$args = array(
    ,’posts_per_page’ => 3
    ,’orderby’ => ‘meta_value_num’
    ,’order’ => ‘DESC’
    ,’meta_query’ => array(
    array(
    ‘key’ => ‘year’
    ,’value’ => get_post_meta($post->ID,’year’,false)
    ),
    array(
    ‘key’ => ‘mouth’
    ,’value’ => get_post_meta($post->ID,’moth’],false)
    ),
    array(
    ‘key’ => ‘day’
    ,’value’ => get_post_meta($post->ID,’day’,false)
    ),
    )
    );`
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

    その後、まずは「年」の順番にソートしてみようと思い、下記の様に「年」にするとうまくいきます。
    同様に「月」「日」も単発でソートするとうまく行くのでですが。。。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    `$args = array(
    ,’posts_per_page’ => 3
    ,’orderby’ => ‘meta_value_num’
    ,’order’ => ‘DESC’
    ,’meta_query’ => array(
    array(
    ‘key’ => ‘year’
    ,’value’ => get_post_meta($post->ID,’year’,false)
    ),
    )
    );`
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

    「年」「月」「日」の3つや「年」「月」の2つの組み合わせなどでは
    うまくいきません。。。。

    原因がわからずちょっと混乱気味です。

    検索してみても解決できないため、お助け頂ければ幸いです。
    よろしくお願い致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 3つに分けずに、一つにまとめてしまえば良いのではないでしょうか?

    ==========================
    key:year
    key:mouth
    key:day

    年月日:20151003 等
    ==========================

    トピック投稿者 WPCO

    (@cocomina)

    animaru様
    ご意見ありがとうございます。

    year,mouth,dayをセレクト要素にしたのは意味があって、
    クライアントのITスキルが低く数字を「半角・全角」気にしないで入力しちゃうんですよね。
    その防護策として全てセレクト要素にしました。

    つきましては、

    いただいたご意見を参考に、javascriptを用いてyear,mouth,dayを連結して
    input hiddenの値として格納することで解決しました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「複数のカスタムフィールドでのソート」には新たに返信することはできません。