如何修改WordPress的搜索,因此查询分类术语和类别术语?(How to amend wordp

2019-08-03 00:40发布

我想修改搜索,所以如果说我有分类法被称为“作家”和“伊恩·兰金”的字词加入后,如果我搜索“伊恩·兰金”,我想这个职位上来。 我猜它只搜索标题和内容的时刻。 我怎样才能使搜索方面呢?

Answer 1:

您可以使用过滤器钩子加入分类表改变了搜索查询。

例如,同时搜索的“作者”分类

首先加入分类表

function tax_search_join( $join )
{
  global $wpdb;
  if( is_search() )
  {
    $join .= "
        INNER JOIN
          {$wpdb->term_relationships} ON {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id
        INNER JOIN
          {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
        INNER JOIN
          {$wpdb->terms} ON {$wpdb->terms}.term_id = {$wpdb->term_taxonomy}.term_id
      ";
  }
  return $join;
}
add_filter('posts_join', 'tax_search_join');

然后找到在分类学“作者”搜索词

function tax_search_where( $where )
{
  global $wpdb;
  if( is_search() )
  {
    // add the search term to the query
    $where .= " OR
    (
      {$wpdb->term_taxonomy}.taxonomy LIKE 'author'
      AND
      {$wpdb->terms}.name LIKE ('%".$wpdb->escape( get_query_var('s') )."%')
    ) ";
  }
  return $where;
}
add_filter('posts_where', 'tax_search_where');

最后组的结果通过邮寄标识,以免因加入重复结果

function tax_search_groupby( $groupby )
{
  global $wpdb;
  if( is_search() )
  {
    $groupby = "{$wpdb->posts}.ID";
  }
  return $groupby;
}
add_filter('posts_groupby', 'tax_search_groupby');


文章来源: How to amend wordpress search so it queries taxonomy terms and category terms?
标签: php wordpress