2012-11-30 61 views
0

我的側邊欄中有一個高級搜索表單。該動作設置爲get_bloginfo('home'),所以它應該指向search.php(因爲表單的id是「searchform」)在Wordpress中搜索自定義元字段

該搜索表單應該按自定義元字段過濾結果。

我嘗試和創造了這個search.php中,

<?php 
function get_reviews_by_custom_search() { 
    global $wpdb; 

    $grad   = preg_replace('/^[0-9a-zA-Z-]/', '', $_GET['grad']); 
    $adType   = preg_replace('/^[0-9a-zA-Z-]/', '', $_GET['adType']); 
    $realEstateType = preg_replace('/^[0-9a-zA-Z-]/', '', $_GET['realEstateType']); 
    $dioGrada  = preg_replace('/^[0-9a-zA-Z-]/', '', $_GET['dioGrada']); 
    $squareFrom  = preg_replace('/[^0-9]/', '', $_GET['squareFrom']); 
    $squareTo  = preg_replace('/[^0-9]/', '', $_GET['squareTo']); 
    $priceFrom  = preg_replace('/[^0-9]/', '', $_GET['priceFrom']); 
    $priceTo  = preg_replace('/[^0-9]/', '', $_GET['priceTo']); 
    $roomsNum  = preg_replace('/[^0-9]/', '', $_GET['roomsNum']); 

    // Change the defaults if not chosen 
    if($squareFrom == '') { $squareFrom = '0'; } 
    if($squareTo == '') { $squareTo = '10000000'; } 

    // Define the arguments for the WP query 
    $args = array(
      'post_type' => 'post', 
      'relation' => 'AND', 
      'meta_query' => array(
        array(
          'key' => 'ex_lokacija', 
          'value' => $grad , 
          'compare' => 'LIKE' 
        ), 
        array(
          'key' => 'ex_vrsta_oglasa', 
          'value' => $adType , 
          'compare' => 'LIKE' 
        ), 
        array(
          'key' => 'ex_tip_nekretnine', 
          'value' => $realEstateType , 
          'compare' => 'LIKE' 
        ), 
        array(
          'key' => 'ex_dio_pg', 
          'value' => $dioGrada , 
          'compare' => 'LIKE' 
        ), 
        array(
          'key' => 'ex_dio_pg', 
          'value' => $dioGrada , 
          'compare' => 'LIKE' 
        ), 
        array(
          'key' => 'et_square_footage', 
          'value' => array($squareFrom, $squareTo), 
          'type' => 'numeric', 
          'compare' => 'BETWEEN' 
        ), 
        array(
          'key' => 'et_price', 
          'value' => array($priceFrom, $priceTo), 
          'type' => 'numeric', 
          'compare' => 'BETWEEN' 
            ) 
      ) 
    ); 

    $searched_posts = new WP_Query($args); 

    return $searched_posts; 
} 

$searched_posts = get_reviews_by_custom_search();  

    get_header(); ?> 

     <div id="content-top"> 
      <div id="menu-bg"></div> 
      <div id="top-index-overlay"></div> 

      <div id="content" class="clearfix"> 
       <div id="main-area"> 
        <?php get_template_part('includes/breadcrumbs'); 

         foreach ($searched_posts as $searched_post) { 

          echo "<h1 class=\"entry-title\"><a href=\"" . get_permalink($searched_post->ID) . "\">" . $searched_post->post_title . "</a></h1>"; 

          echo "Rating - " . get_post_meta($searched_post->ID,'rating',true) . "<br>"; 
          echo "Audience - " . get_post_meta($searched_post->ID,'audience',true) . "<br>"; 
          echo "Length - " . get_post_meta($searched_post->ID,'length',true) . "<br>";  

          echo "<a href=\"" . get_permalink($searched_post->ID) . "\">Read More</a>"; 

         } 
        ?> 

       </div> <!-- end #main-area --> 

       <?php get_sidebar(); ?> 

    <?php get_footer(); ?> 

我發現大部分的代碼在網上,我還在學習PHP。

第一部分是應該返回搜索到的帖子數組的函數。但是,部分代碼是錯誤的。

+0

歡迎來到本網站!如果你在你的問題中加入了幾行你知道或懷疑錯誤的代碼,它可以更容易地得到很好的答案。請記住,您可以使用符號(位於QWERTY鍵盤上的1鍵左側)來包含您希望以不同方式顯示的內容(如代碼),以便它們脫穎而出。 – tmesser

回答

0

有幾個選項在這裏:

1,有一個很好的Wordpress plugin你可能會考慮

2,你可以捕捉那麼搜索項中使用它您WP_QUERY

$s = $_POST['search_field']; 
$my_query = new WP_Query('meta_value='.$s); 
+0

問題是,我在表單中有一些