1

这是这个问题的重复,因为我在 SO 上得到了更快的答案。

开箱即用,WP eCommerce 不支持元搜索。如果您在线销售书籍并且需要客户能够通过最重要的元标签“作者”进行搜索,这将是一个大问题!

有人可以告诉我如何包含元信息搜索,或者是否有更好的插件也不需要花费一臂之力来搜索元信息?

编辑:

从那以后,我发现了一个名为 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 的自定义字段的插件,以弥补 WP eCommerce 的不足,并且需要弄清楚如何从这个插件中包含元信息?

非常感谢

4

1 回答 1

0

事实证明,WP eCommerce 使用默认的 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参数结构的详细信息,但基本上这将寻找与搜索到的值相似的自定义字段。

您可以在Class Reference/WP Query WordPress codex 页面上找到有关meta_query查询参数的更多详细信息。

于 2012-11-22T08:43:29.110 回答