这是一个repeat of this question因为我在SO上得到了更快的答案。
开箱即用,WP电子商务不支持元搜索。如果您在线销售图书并且需要客户能够通过最重要的Meta标签搜索,这是一个大问题!
有人可以告诉我如何包含元信息搜索,还是有一个更好的插件,不需要花费一条腿来搜索元信息?
修改
此后我发现了一个名为Relevanssi的更好搜索插件,Alexander Gieg用他自己的代码进一步扩展了它:
add_filter('relevanssi_excerpt_content','wpscproductexcerpt',10,3);
function wpscproductexcerpt($content, $post, $query) {
if ( 'wpsc-product' == relevanssi_get_post_type($post->ID) ) {
$content = $post->post_content . ( !empty($post->post_excerpt) ? " $post->post_excerpt" : '' );
if ( 'on' == get_option('relevanssi_expand_shortcodes') ) {
$content = do_shortcode($content);
} else {
$content = strip_shortcodes($content);
}
// The line below fixes a minor bug in Relevanssi 2.9.14 custom excerpt generating code:
$content = preg_replace("/\t/", ' ', $content);
}
return $content;
}
我需要能够进一步扩展这一点,因为我是用户Visser Lab's Custom Field's plugin以弥补WP电子商务的不足并需要弄清楚如何从这个插件中包含元信息?
非常感谢
答案 0 :(得分:0)
事实证明,WP电子商务正在使用默认的WordPress查询来显示搜索结果。这很好,因为这使得修改此查询以满足我们的需求变得非常容易。这是一个示例代码:
function mySearchFilter($query) {
// is_wp_ecommerce_search() is not an actual function - if you know how to check if the search is from WP eCommerce - you might want to do that, so that you don't modify the normal WordPress search
if ( $query->is_search /* && is_wp_ecommerce_search() */ ) {
$query->set('meta_query', array( array( 'key' => 'custom_key', 'value' => $_GET['custom_key'], 'compare' => 'LIKE' ) ) );
};
return $query;
};
add_filter('pre_get_posts','mySearchFilter');
我不确定检查这是否是WP电子商务搜索的确切功能,这就是&& is_wp_ecommerce_search()
被注释掉的原因。
你必须调整:
'key' => 'custom_key'
部分 - 输入您要查找的自定义字段的名称。'value' => $_GET['custom_key']
- 输入您要查找的值。我假设它将来自$_GET
参数,但您的情况可能会有所不同。'compare' => 'LIKE'
- 下面的链接将提供有关meta_query
参数结构的详细信息,但基本上这将查找值与搜索结果类似的自定义字段。您可以在Class Reference/WP Query WordPress codex页面找到有关meta_query
查询参数的更多详细信息。