2016-03-28 23 views
0

Bu konuda yardıma ihtiyacım var. Aşağıda, search.php arama sonuçları için wp sayfamın bir kodu ve her şey gayet iyi çalışıyor. Şimdi, web sitesi herkese açık etkinliklerle ilgili olduğundan, arama sonuçlarının etkinlik tarihine göre görüntülenmesi çok önemlidir. "Date" adlı bir özel alan oluşturdum ve sonuçları "date" alan değerine göre görüntülemek istiyorum.Arama sonuçlarını meta_key değerine göre sırala

Bir çözüm bulmak için bir hafta harcadım ama maalesef yapamadım. Lütfen bana yardım et :)

İşte

bir koddur:

<?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; ?> 

teşekkür ederiz !!!! Ben başka bir şey denemek istiyorum

+2

Lütfen "$ search_query" dizisini gönderin. – Noman

+0

özel bir gönderi türüdür? veya tüm siteyi aramak ister misiniz? – Mark

+0

@Mark Tüm siteyi aramak istiyorum. – Devades

cevap

0

: In

senin bunu test etmedi ama pre_get_posts filtre döngü önce çağrılacak functions.php veya my-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; 
} 

. Eğer doğru sorgu ise (arama ve ana) orderby değerini meta değerine göre değiştirdim.

+0

Cevabınız için çok teşekkür ederim, ama maalesef işe yaramıyor. – Devades

+0

Neden değil? Bu, http://yoursite.com/s=test adresinde standart ile çalışmalıdır; eğer if (have_posts()) {while (have_posts()) {the_post();/* döngü buraya gider * /}} 'template. –

+0

Üzgünüm, işe yarıyor. Daha önce kodunuzda fazladan bir '' 'kodunuz olduğunu fark etmedim. Yani, satır: '$ query-> query_vars ['meta_key'] => 'your_meta_key';' şöyle olmalıdır: '$ query-> query_vars ['meta_key'] = 'your_meta_key';' Teşekkür ederim çok fazla!!!! – Devades

İlgili konular