admin管理员组

文章数量:1122846

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.

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.

Share Improve this question asked Dec 24, 2017 at 16:36 muprabakaranmuprabakaran 11 silver badge2 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 0

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

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;}

本文标签: pluginswoocommerce product search based only title