Soporte » Plugins y Hacks » WooCommerce » ¿Cómo crear buscador interno que busque los ingredientes del productos ?

  • Necesito crear un buscador interno en la web para encontrar los productos del catálogo por sus ingredientes, y no por categorías, SKU, etiquetas, etc…
    Estaba buscando la opción de encontrar como personalizar sin usar un Plugin

    El hándicap es que necesito buscar los productos por ingredientes que ciertos productos no contienen. Es decir, hay personas que son alérgicas a algunos productos y no pueden comer varios ingredientes, y la necesidad seria es darles la oportunidad de buscar productos que no tengan los ingredientes a los que son alérgicos.
    Por ejemplo, introduce la palabra “azúcar” en el buscador, y aparecen todos los productos que no tienen azúcar entre sus ingredientes

    Seguro que a alguien ya se le ha ocurrido esta idea, pero no encuentro ningún ejemplo para guiarme
    En el caso que muestro a continuación, la búsqueda está filtrada por categorías y etiquetas.

    <form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
    
    <label>
    
    <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ) ?></span>
    
    <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
    
    </label>
    
    <select id="category_name" name="category_name">
    
    <option value="">Todas</option>
    
    <?php $categories = get_categories();
    
    foreach ($categories as $key => $category) {?>
    
    <option value="<?php echo $category->slug;?>"><?php echo $category->name;?></option>
    
    <?php }?>
    
    </select>
    
    <select id="tag" name="tag">
    
    <option value="">Todas</option>
    
    <?php $tags = get_tags();
    
    foreach ($tags as $key => $tag) {?>
    
    <option value="<?php echo $tag->slug;?>"><?php echo $tag->name;?></option>
    
    <?php }?>
    
    </select>
    
    <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
    
    </form>

    Sé que puedes limitar el contenido de búsqueda, por ejemplo con post_type

    <input type="hidden" name="post_type" value="post" />
    function my_custom_searchengine($query) {
      if ($query->is_search && !is_admin()) {
        $query->set('post_type', array('post'));
      }
      return $query;
    }
    add_filter( 'pre_get_posts', 'my_custom_searchengine' );

    Pero no se cuales son los posts que debo agregar, no se como realizar esta búsqueda del campo descripción del producto, no se como hacer que funcione, y encontrar productos que no contengan los ingredientes de búsqueda
    Todo seria en modificar los «select»campos, en el buscador, pero no entiendo cual seria el Query que se debería agregar en el values de la select, tomando en cuenta que los ingredientes estan solo en la descripción del producto.
    Dado que WordPress le permite extender la búsqueda a campos personalizados, esto podría hacerse con mata_query .

    ¿Cómo podría conseguir esto?
    ¿Debo crear un “array” con los ingredientes de todos los productos?

  • Debes estar registrado para responder a este debate.