質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.54%

wordpressの検索結果ページでソートしたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,178

igaiga

score 135

前提・実現したいこと

wordpressの検索結果ページで一覧を築年数順にソートして表示させたいのですが、うまくできません。

エラーも表示されず、表示崩れ等もないのですが、順番に並びません。

query_posts部分の書き方が間違っているのかもしれないというくらいで他に原因となりそうな物がわかりません。

お知恵を拝借できれば幸いです。

※一番下のquery_postsより上の部分はあまり関係ないかもしれませんが、一応記載しました。

該当のソースコード

if($city_cd){//エリア情報を渡す
$taxquerysp[] = array(
            'taxonomy'=>'city',
            'terms'=> $city_cd,
            'include_children'=>true,
            'field'=>'slug',
            'operator'=>'IN'
            );
}
if($rent_amount_lower){//賃金(下限)を渡す
$metaquerysp[] = array(
            'key'=>'rent_amount02',
            'value'=>$rent_amount_lower,
            'compare'=>'>=',
            'type'=>'NUMERIC',
            );
}
if($rent_amount_upper){//賃金(上限)を渡す
$metaquerysp[] = array(
            'key'=>'rent_amount01',
            'value'=>$rent_amount_upper,
            'compare'=>'<=',
            'type'=>'NUMERIC',
            );
}
if($complete_year_upper){//築年数を渡す
$complete_year = (date('Y')*12+date('m'))-($complete_year_upper*12);
$metaquerysp[] = array(
            'key'=>'completion_date',
            'value'=>$complete_year,
            'compare'=>'>=',
            'type'=>'NUMERIC',
            );
}
if($est_transport_time_upper){//徒歩分数を渡す
$metaquerysp[] = array(
            'key'=>'railway_time',
            'value'=>$est_transport_time_upper,
            'compare'=>'<=',
            'type'=>'NUMERIC',
            );
}
$metaquerysp['relation'] = 'AND';

        query_posts( array(
        'tax_query' => $taxquerysp,
         'meta_query' => $metaquerysp,
        's' => $s,
        'paged' => $paged,
        'posts_per_page' => $limit,
        'orderby' => 'meta_value_num',
        //↓築年数を数値に置きなおした値が入っているカスタムフィールドの名前
        'meta_key' => 'completion_date',
        'order' => 'ASC',
                ));

試したこと・確認したこと

meta_keyを追加すると検索結果の数が2件だけですが減ってしまいます。ここらへんにもヒントがあるような気がしますが、わかりませんでした。

meta_key部分を他のカスタムフィールド名にすると一応順番は並び変わりますが、規則性がなくこれも原因がわからない状態です。

ソート以外の部分は正しく表示されており、posts_per_pageでページャーをつけることはできました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

+1

プラグインのIntuitive Custom Post Orderが邪魔をしていたようです。
失礼いたしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

憶測に過ぎませんが、確認してみてください。

このcompletion_dateというフィールドは、ちゃんと数値に変換できる値に揃えていますでしょうか?
例えば、全角数字で"12"という値が入っていると上手くソートされないような気がします。

meta_keyを追加すると検索結果の数が2件だけですが減ってしまいます。

これはおそらく、completion_dateが存在しないpostが除外されているのかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/18 09:04

    completion_dateというフィールドは、年月を月に置き換えているので数値で間違いないかと思います。(2012年6月=2012×12+6=24150のような値にしています)
    私もcompletion_dateが空のものがあるのかと思って以下のようにして検索してみましたがヒットしないようでした。数字以外の文字が入っている可能性もありますが、今のところ見つかりません。
    'meta_key'=>'completion_date',
    'meta_value'=>' ',
    'meta_compare'=>'='

    キャンセル

  • 2016/07/18 09:46

    すみません。completion_dateが空の登録がありました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.54%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる