(Wordpress +自动填充)搜索标签并获取搜索标签的所有帖子列表?

时间:2014-11-30 16:08:28

标签: php jquery wordpress autocomplete tags

我正在尝试使用自定义的autocomplete建议列表构建wordpress搜索。我想仅将搜索限制为标记,如果用户键入适合任何标记或多个标记的搜索查询,则自动完成列表应返回与此/这些标记关联的所有帖子。

例如,输入“Jazz”可以给出:

Jazz
  Post 1
  Post 2
  Post 3
  Post 4
  Post 5

Jazz House
  Post 1
  Post 2
  Post 3

Great Jazz Trio
  Post 1

…

有一个自动填充example, working with categories。这可能导致正确的方向,但这里的搜索查询是将在其类别下列出的“帖子”。我需要用户搜索类别(标签)以列出与之关联的所有帖子。

我认为可以创建所有标签的对象数组。每个对象(标签)都可以包含所有相关帖子。该数组可以作为自动完成的数据源。

我对如何处理这个问题的任何建议感到高兴。

2 个答案:

答案 0 :(得分:0)

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插件,如this示例中所示。这样做的最快方式(在性能方面)是创建一个自定义查询,该查询将加入wp_postswp_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" }
]

答案 1 :(得分:0)

爵士

您可以使用此插件

https://wordpress.org/plugins/search-autocomplete/

它也支持自定义帖子类型。完成jquery ui