2012-04-01 17 views
8

Trong mã plugin của tôi, tôi muốn thực hiện một số WP_Query (hoặc tương tự) trả về tất cả các bài viết phù hợp với chuỗi truy vấn đã cho, như thể người dùng đã nhập cùng một chuỗi đó vào biểu mẫu tìm kiếm WordPress. Có lẽ tôi chỉ là dày đặc, nhưng tôi dường như không thể tìm ra cách để làm như vậy. Tôi hy vọng sẽ có thông số đặc biệt cho WP_Query, chẳng hạn như matching, nhưng tôi không thấy bằng chứng nào về một.Làm thế nào để tìm nạp theo chương trình các bài viết phù hợp với truy vấn tìm kiếm trong WordPress?

Tôi sẽ bắt đầu xem qua cơ sở mã WordPress để xem cách thực hiện nội bộ và tôi sẽ đăng câu trả lời ở đây nếu tôi tìm thấy. Tôi chỉ nghĩ rằng ai đó có thể xảy ra để biết chính xác.

Trả lời

19

Đi qua một biến truy vấn của " S "Để WP_Query với cụm từ tìm kiếm sẽ lọc bài kết quả theo từ khóa tìm kiếm:

$query_args = array('s' => 'disquiet'); 
$query = new WP_Query($query_args); 

Các tương ứng SQL WHERE khoản được tạo ra bởi truy vấn này trông như thế này:

AND (((wp_posts.post_title LIKE '%disquiet%') OR (wp_posts.post_content LIKE '%disquiet%'))) 

Mặc định tìm kiếm bao gồm các ký tự đại diện như trình bày ở trên , rất có thể là những gì bạn đang tìm kiếm. Nếu bạn muốn tìm kiếm chính xác, bạn cũng có thể chuyển một truy vấn var là "exact" => true.

Để biết chi tiết, hãy xem phương thức get_posts của WP_Query trong wp-includes/query.php.

+0

bạn có thể vui lòng cho chúng tôi biết sau khi đi qua biến truy vấn để là làm thế nào tôi có thể nhận được danh sách của blog mặc dù nội dung của blog đã tìm kiếm như của tôi đã làm như vậy nhưng nó mang lại cho tôi nội dung của bài đăng bất chấp danh sách blog – Hetal1311

0

Một cái gì đó như thế này?

// Check the query variable is available 
if(!$wp_query) global $wp_query; // If not, global it so it can be read from 

// Your custom args 
$args = array('the_title' => $search_term); 

// Merge the custom args with any for the query already 
$args = array_merge($args , $wp_query->query); 

// Now do the query 
query_posts($args); 

Hoặc bạn có thể thử điều này:

$query = array (
    'the_title' => $search_term 
); 

$queryObject = new WP_Query($query); 
// The Loop... 
0

Tôi tin rằng bạn đang tìm kiếm là này compare

$args = array(
    'post_type' => 'product', 
    'meta_query' => array(
     array(
      'key' => 'color', 
      'value' => 'blue', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

từ wordpress documentation

compare (string) - Operator to test. Possible values are '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. Default value is '='. 
1

tôi sử dụng này trong plugin của tôi:

$query = new WP_Query(array(
    'post_type' => 'any', 
    'suppress_filters' => TRUE, 
    'posts_per_page' => '-1' 
)); 

foreach ($query->posts as $post) { 
    // ... 
} 

post_type là cần thiết nếu bạn đang đi để làm việc với bài tùy loại. suppress_filters sẽ ngăn nội dung bị định dạng nếu bạn cần phân tích. posts_per_page sẽ trả về tất cả các bài đăng, không phải là mặc định trên mỗi trang.

-1

Đây là một cách đơn giản và dễ dàng hơn để làm tìm kiếm:

$query = " 
     SELECT  * 
     FROM  $wpdb->posts 
     WHERE  $wpdb->posts.post_title LIKE '$param2%' 
     AND   $wpdb->posts.post_type = 'wp_exposants' 
     ORDER BY $wpdb->posts.post_title "; 
$wpdb->get_results($query); 
Các vấn đề liên quan