目前,当我搜索一个术语时,搜索引擎仅查找产品信息(我认为是标题和描述)。我正在寻找一种方法来在其中添加产品类别,并在该术语出现在类别标题或描述中时列出这些类别中的产品。
我不想显示类别,仅显示这些类别中的产品(如果在这些类别的标题或描述中找到这些术语)。
我现在没有任何代码,因为我没有找到任何相关信息。只有人们说要下载一个插件,但我想要一个带有 add_action pre_get_posts 的 PHP 函数。
我正在使用 wpml 插件(翻译插件),我想确保它考虑到这一点。
欢迎任何帮助,谢谢
我尝试寻找方法来做到这一点,但我无法弄清楚。我能找到的都是插件。
您可以使用
pre_get_post
过滤器来实现此目的。请注意,这会影响整个网站的搜索结果,因此,如果您只需要特定部分/表单,那么您需要相应地添加条件
function search_by_category( $query ) {
if ( !is_admin() && $query->is_search ) {
// Get the search query
$search_query = $query->query_vars['s'];
// Modify the query to search category names and descriptions
$query->set( 'tax_query', array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',
'field' => 'name',
'terms' => $search_query,
'operator' => 'LIKE'
),
array(
'taxonomy' => 'product_cat',
'field' => 'description',
'terms' => $search_query,
'operator' => 'LIKE'
)
));
// Only search for products
$query->set( 'post_type', 'product' );
}
}
add_action( 'pre_get_posts', 'search_by_category' );