2011-12-02 27 views

回答

0
query_posts(array('post_type'=>'photo')); 
    add_filter('posts_where', 'layzend_posts_where', 10, 2); 
    function layzend_posts_where($where, &$wp_query) 
    { 
     global $wpdb; 
     $term = $_GET['term'] ? $_GET['term'] : ''; 
     $type = $_GET['type'] ? $_GET['type'] : ''; 
     if (!empty($term)) 
     { 
      switch ($type) 
      { 
       case 'all': 
        $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql(like_escape($term)) . '%\''; 
        break; 
       case 'any': 
        $terms = explode(' ', $term); 
        $where .= ' AND '; 

        foreach ($terms as $t) 
        { 
         $whereed[] = $wpdb->posts . ".post_title LIKE '%$t%' "; 
        } 

        $where .= '(' . implode(' OR ',$whereed) . ')'; 

        break; 
       case 'id': 
        $where .= ' AND ' . $wpdb->posts . '.ID = \'' . esc_sql(like_escape($term)) . '\''; 
        break; 
       case 'exact': 
        $where .= ' AND ' . $wpdb->posts . '.post_title = \'' . esc_sql(like_escape($term)) . '\''; 
        break; 
      } 
     } 
     return $where; 
    } 
    ?> 
    <?php if (have_posts()): ?> 
    <?php 
    $paged = get_url_var('page'); 
    $loop = new WP_Query(array(
     'post_type' => 'photo', 
     'posts_per_page' => 12, 
     'orderby'=> 'post_date', 
     '' => '', 
     'paged'=>$paged 
    )); 
+0

爲了更好地理解韋迪WordPress的查詢過濾器。您可以在其中附加各種篩選器以生成更復雜的SQL查詢。 –

+1

感謝您的代碼示例。這真的是一個很好的幫助 –