Поиск товаров Woocommerce не проверяет product_tag?

Похоже, что функция поиска для продуктов WooCommerce не проверяет термины таксономии «product_tag» или поле SKU? Я добавил артикулы в качестве тегов продуктов к соответствующим продуктам, но при поиске артикула он по-прежнему ничего не возвращает ... Как мне сделать так, чтобы функция поиска проверяла условия product_tag? Я пробовал много разных вещей, от добавления tax_query в фильтр pre_get_post до совершенно нового цикла WP_Query, по какой-то причине он просто не может искать product_tags .... так какой смысл в теге продукта ???


person b747fp    schedule 16.08.2012    source источник


Ответы (2)


Я пробовал код от woo и других для поиска по артикулу безрезультатно. Однако плагин search-all, загружаемый из репозитория, выполняет свою работу.

person Win    schedule 23.10.2012

У меня есть решение для поиска товаров по коду SKU.

Это слишком просто, просто вставьте следующий код в function.php, и тогда вы сможете увидеть изменения в результатах поиска.

function search_by_id_only( $search, &$query_vars ) {
    global $wpdb, $pagenow;

    if ( 'edit.php' == $pagenow || empty($search) ) {
        return $search;
    }

    $args = array(
        'posts_per_page'  => -1,
        'post_type'       => 'product',
        'meta_query' => array(
            array(
                'key' => '_sku',
                'value' => $query_vars->query['s'],
                'compare' => 'LIKE'
            )
        )
    );
    $posts = get_posts( $args );
    if ( empty( $posts ) ) return $search;
    $get_post_ids = array();
    foreach($posts as $post){
        $get_post_ids[] = $post->ID;
    }
    if ( sizeof( $get_post_ids ) > 0 ) {
        $search = str_replace( 'AND (((', "AND ((({$wpdb->posts}.ID IN (" . implode( ',', $get_post_ids ) . ")) OR (", $search);
    }
    return $search;
}
add_filter( 'posts_search', 'search_by_id_only', 999, 2 );
person Rohit Verma    schedule 11.07.2019