如何在 wordpress 中使用 LIKE 搜索类别名称的帖子?

Posted

技术标签:

【中文标题】如何在 wordpress 中使用 LIKE 搜索类别名称的帖子?【英文标题】:How to Search posts using LIKE for Category Name in wordpress? 【发布时间】:2017-09-05 02:25:39 【问题描述】: 我需要自定义 word press 基本搜索过滤器。 搜索帖子标题和帖子内容中的关键字可以正常工作。 现在我需要显示结果,如果用户输入的名称匹配 类别名称,那么它也应该从该类别中提取结果 作为其他结果。

我假设,它应该类似于使用 税收中 category_name 或 category_in 运算符的 LIKE 子句 查询。

$args = get_posts(数组( '字段' => 'ids', 'post_type' => '发布', 'post_status' => '发布', 'posts_per_page' => -1, 's' => $_REQUEST['s'] ? $_REQUEST['s'] : '' , 'tax_query' => 数组( 大批( '分类法' => '分类法名称', '字段' => '蛞蝓', 'terms' => 'SLUG OF the TERM', // LIKE(这里应该是任何 LIKE 子句等) ), ) ));

如何实现这种情况,意味着当用户输入任何与类别名称匹配的关键字时,它应该从该类别中提取所有结果以及一般搜索结果。

示例:用户在搜索栏中输入“ABC”,并且有名称为“ABC Park”的类别可用,那么它应该拉此类别的结果以及帖子标题和内容包含“ABC”的结果。

【问题讨论】:

wordpress.stackexchange.com/a/18715 wordpress.stackexchange.com/a/173752 @AlivetoDie 这些链接不是关于从类似于搜索词的类别名称进行搜索。另请查看已编辑的问题。谢谢。 举例说明需要如何添加like查询。 【参考方案1】:

好的...我想出了一个解决方案,我使用 LIKE 查询从表 terms 中获取了所有类别 ID,然后在其他查询中将此数组作为类别参数传递。这是代码。

$term_ids=array(); 
      $cat_Args="SELECT * FROM $wpdb->terms WHERE name LIKE '%".$_REQUEST['s']."%' ";
      $cats = $wpdb->get_results($cat_Args, OBJECT);
      array_push($term_ids,$cats[0]->term_id);    



$q1 = get_posts(array(
        'fields' => 'ids',
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        's' =>  $_REQUEST['s'] ? $_REQUEST['s'] : '' 

));
 $q2 = get_posts(array(
        'fields' => 'ids',
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'category' =>$term_ids
));
$unique = array_unique( array_merge( $q1, $q2 ) );

$posts = get_posts(array(
    'post_type' => 'post',
    'post__in' => $unique,
    'posts_per_page' => -1
));
  if ($posts ) : 

foreach( $posts as $post ) :
//show results
endforeach;
endif;

但我仍然想要一种更简单、更精确的方法。 :)

【讨论】:

您可以通过编写一些自定义 SQL 来组合查询,将 get_posts() 生成的 SQL 合并到您的第一个 SELECT 语句中。

以上是关于如何在 wordpress 中使用 LIKE 搜索类别名称的帖子?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JPA 存储库中准确搜索数字而不是使用 LIKE?

如何使用 LIKE 通配符在列中搜索(不区分大小写)?

如何使用 PDO 进行 LIKE 搜索?

使用LIKE的Postgres节点搜索查询,如何设置%

如何使用 Laravel 在 LIKE 搜索中使用 ORM 从两个表中获取数据

Slick Postgres:如何使用 like 运算符在字符串列表中搜索