2016-03-28 20 views
0

本当に助けが必要です。以下は、検索結果search.phpのための私のwpページテンプレートのコードであり、すべて正常に動作します。さて、このウェブサイトは公開イベントに関するものなので、検索結果をイベント日付で表示することが非常に重要です。私は "date"というカスタムフィールドを作成しましたが、 "date"フィールド値で結果を表示したいと思います。meta_keyの値で検索結果を並べ替えます

解決策を見つけるのに一週間を費やしましたが、残念ながら私はできませんでした。 、私を助けて:)

ここでは、コードでください:

<?php 
    global $query_string; 
    $query_args = explode("&", $query_string); 
    $search_query = array(); 
    if(strlen($query_string) > 0) { 
     foreach($query_args as $key => $string) { 
      $query_split = explode("=", $string); 
      $search_query[$query_split[0]] = urldecode($query_split[1]); 
     } 
    } 
    $search = new WP_Query($search_query); 
?> 

<?php if ($search->have_posts()) : while ($search->have_posts()) : $search->the_post(); ?> 

    <!-- loop goes here --> 

<?php endwhile; else: ?> 

<?php endif; ?> 

ありがとうございました!!!!

+2

'$ search_query'の配列を投稿してください。 – Noman

+0

はカスタムポストタイプですか?あなたはサイト全体を検索したいのですか? – Mark

+0

@マーク私は全サイトを検索したい。 – Devades

答えて

0

私は何か他のもの試してみた:私はそれをテストしなかったが、pre_get_postsフィルタは、ループの前に呼び出されます

あなた functions.phpmy-plugin.php

add_filter('pre_get_posts', 'customize_search_page'); 

function customize_search_page($query){ 

    if(!is_admin() && $query->is_search && $query->is_main_query()){ 
     $query->query_vars['meta_key'] = 'your_meta_key'; 
     $query->query_vars['orderby'] = 'meta_value'; 
     $query->query_vars['order'] = 'DESC'; 
    } 
    return $query; 
} 

を。正しいクエリ(検索とメイン)の場合は、orderbyをメタ値順に変更しました。

+0

ご回答いただきありがとうございますが、残念ながら動作しません。 – Devades

+0

どうしてですか?これは、標準の 'if(have_posts()){while(have_posts()} {the_post();で、http://yoursite.com/s=testで動作するはずです。/* loop goes here * /}} 'テンプレート。 –

+0

申し訳ありません、それは動作します。私はあなたのコードの中にもう一つ '>'があることに気付かなかった。 '$ query-> query_vars ['meta_key'] => 'your_meta_key';' は以下のようになります: '$ query-> query_vars ['meta_key'] = 'your_meta_key';' ありがとうとても!!!! – Devades

関連する問題