[英](Wordpress + Autocomplete) Search for tags and get a list of all posts for searched tag?
我正在嘗試使用自定義的自動完成建議列表來構建wordpress搜索。 我只想將搜索限制為標簽,並且如果用戶鍵入的搜索查詢適合任何標簽或多個標簽,則自動完成列表應返回與此標簽/這些標簽關聯的所有帖子。
例如,輸入“爵士”可以給出:
Jazz
Post 1
Post 2
Post 3
Post 4
Post 5
Jazz House
Post 1
Post 2
Post 3
Great Jazz Trio
Post 1
…
有一個自動完成的例子,使用category 。 這可能會朝正確的方向發展,但是這里的搜索查詢是“帖子”,將在其類別下列出。 我需要用戶搜索類別(標簽)以列出與其相關聯的所有帖子。
我認為有可能創建所有標簽的對象數組。 每個對象(標簽)可以包含所有相關帖子。 該數組可以用作自動完成的數據源。
如果有任何建議,我將很高興。
global $wpdb;
// search term provided by user
$s = 'jazz';
$query = '
SELECT wp.post_title AS label, wt.name AS category
FROM `wp_posts` wp
INNER JOIN `wp_term_relationships` wtr ON (wp.`ID` = wtr.`object_id`)
INNER JOIN `wp_term_taxonomy` wtt ON (wtr.`term_taxonomy_id` = wtt.`term_taxonomy_id`)
INNER JOIN `wp_terms` wt ON (wt.`term_id` = wtt.`term_id`)
WHERE wp.post_type="post" AND wp.post_status="publish" AND wtt.taxonomy = "post_tag" AND wt.name LIKE "%%%s%%"
ORDER BY wt.name, wp.post_date DESC';
$posts = $wpdb->get_results( $wpdb->prepare( $query, $s ) );
如果我沒記錯的話,那么您的目標是將數據數組提供給jQuery UI Autocomplete插件,如本例所示。 最快的方法(就性能而言)是創建一個自定義查詢,該查詢將連接wp_posts
和wp_terms
表,具體取決於用戶提供的搜索詞。 轉換為json( json_encode($ posts) )后,查詢結果將采用適用於自動完成插件的格式:
[
{ label: "Post 1", category: "Great Jazz Trio" },
{ label: "Post 1", category: "Jazz" },
{ label: "Post 2", category: "Jazz" },
{ label: "Post 3", category: "Jazz" },
{ label: "Post 4", category: "Jazz" },
{ label: "Post 5", category: "Jazz" },
{ label: "Post 1", category: "Jazz House" },
{ label: "Post 2", category: "Jazz House" },
{ label: "Post 3", category: "Jazz House" }
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.