woocommerce product search based only title

hi i need your help regarding for woo-commerce product title based search we have list of product my searching keyword available in product title need to show list product. if product title don't have my search keyword but available in product description section this don't need to display this product.

Topic woocommerce-offtopic categories plugins Wordpress

Category Web


If anybody needs to search by title only, but to keep the default "-" (hyphen) exclude word functionality, here's a slightly updated version:

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 ) );
    // Allow words starting with the '-' sign to be excluded from the search!
    if (str_starts_with($term, '-')) {
        $term = substr($term, 1);
        $search .= "{$searchand}($wpdb->posts.post_title NOT LIKE '{$n}{$term}{$n}')";
    } else {
        $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 below code on function.php file in your theme directory .

<?php
    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 );
?>

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.