仅搜索WooCommerce产品名称

时间:2013-05-09 作者:kristina childs

将帖子搜索限制在标题上是轻而易举的事,但WooCommerce的帖子类型并不遵守这一规则。我已经尝试修改下面的代码,以特定于产品,但没有任何运气。

function search_by_title_only( $search, &$wp_query )
{
    global $wpdb;
    if ( empty( $search ) )
        return $search; // skip processing - no search term in query
    $q = $wp_query->query_vars;
    $n = ! empty( $q[\'exact\'] ) ? \'\' : \'%\';
    $search = \'\';
    $searchand = \'\';
    foreach ( (array) $q[\'search_terms\'] as $term ) {
        $term = esc_sql( like_escape( $term ) );
        $search .= "{$searchand}($wpdb->posts.post_title LIKE \'{$n}{$term}{$n}\')";
        $searchand = \' AND \';
    }
    if ( ! empty( $search ) ) {
        $search = " AND ({$search}) ";
        if ( ! is_user_logged_in() )
            $search .= " AND ($wpdb->posts.post_password = \'\') ";
    }
    return $search;
}
add_filter( \'posts_search\', \'search_by_title_only\', 500, 2 );
我不确定我是否使用了正确的hooks 或者如果我选错了树。有人知道怎么做吗?

1 个回复
最合适的回答,由SO网友:kristina childs 整理而成

结果是免费的Relevanssi 插件很好地做到了这一点。我担心它只会搜索帖子,而不会自定义帖子类型,但它可以做到这一切。。。而且相当好!它只需要在主题的functions.php 文件以使其忽略正文内容:

// search titles only (relevanssi plugin)
add_filter(\'relevanssi_index_content\', \'contentoff\');
function contentoff() {
    return false;
}
或者,您可以让它省略标题(不要同时使用这两个标题,否则您将什么也不搜索!

// search titles only (relevanssi plugin)
add_filter(\'relevanssi_index_titles\', \'contentoff\');
function contentoff() {
    return false;
}

结束

相关推荐

Search posts by Tag

我希望我的搜索表单只显示按标记组织的结果。我知道你可以添加&tag=TAGNAME 但如何将其集成到表单中,以便我的网站只搜索包含与搜索框中输入的内容相同的标记的帖子?我在页面上有两个搜索,因此理想情况下,我希望能够通过HTML将其添加到表单中,而不是其他任何地方,但任何答案都可以:)谢谢