Wp电子商务元信息搜索

时间:2012-11-19 14:31:21

标签: wordpress search e-commerce

这是一个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电子商务的不足并需要弄清楚如何从这个插件中包含元信息?

非常感谢

1 个答案:

答案 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()被注释掉的原因。

你必须调整:

  1. 'key' => 'custom_key'部分 - 输入您要查找的自定义字段的名称。
  2. 'value' => $_GET['custom_key'] - 输入您要查找的值。我假设它将来自$_GET参数,但您的情况可能会有所不同。
  3. 'compare' => 'LIKE' - 下面的链接将提供有关meta_query参数结构的详细信息,但基本上这将查找值与搜索结果类似的自定义字段。
  4. 您可以在Class Reference/WP Query WordPress codex页面找到有关meta_query查询参数的更多详细信息。