如果您只想要产品而不获取品牌,我已将您的代码更新为以下(但请注意,将获取名称中包含“a”的所有品牌,不一定以“a”开头):
'taxonomy' => 'brand',
'field' => 'name',
'terms' => $brand_name_field
'operator' => 'LIKE'
如果必须以“a”开头,我建议您在用户输入至少 2 或 3 个字符后进行查询,以减少获取不必要品牌的可能性。
如果您只想获取名称以“a”开头的品牌,您不应该这样做WP_Query
,您需要使用get_terms()
参数name__like
集。
以下将解决问题:
$brands = get_terms([
'taxonomy' => 'brand',
'name__like' => 'a' //you can use a variable in your case $search
'fields' => 'ids' //If you cant to fetch all term data use 'all'
]);
请注意,这不会获取以“a”开头的品牌,而是会获取所有包含“a”的品牌,因此将获取 Adidas、Puma 和 Asics。这在 WordPress 3.7 中有所改变,以前 name__like 匹配以字符串开头的术语。
如果您还想同时搜索术语名称和 slug,您可以使用search
而不是name__like
您可以在此处获取更多信息https://developer.wordpress.org/reference/classes/wp_term_query/__construct/
获取品牌后,您还可以通过执行以下操作来获取归类于这些品牌的所有产品,WP_Query
以防tax_query
顶部的产品无法解决您的问题:
$products = new WP_Query([
'post_type' => 'product',
'tax_query' => [
'taxonomy' => 'brand',
'field' => 'term_id',
'terms' => $brands,
'operator' => 'IN'
]
]);
让我知道这是否适合您。