Búsqueda por categorías

Inicio Foros WordPress Programación Búsqueda por categorías

Este debate contiene 2 respuestas, tiene 2 mensajes y lo actualizó  LGrusin hace 6 años, 5 meses.

  • Autor
    Publicaciones
  • #62086

    atiquetedeveloper
    Participante

    Quiero hacer una pequeña búsqueda avanzada en función de categorías y texto.

    Tengo un campo de texto, un campo oculto de categoría y checkbox por cada una las categorias a buscar, al lanzar el formulario relleno vía js el campo cat con las categorías por comas.
    – Campo de texto
    – Checkbox con valor 1 -> Blogs
    – Checkbox con valor 2 -> Redes Sociales
    – Checkbox con valor 3 -> Otros
    – Checkbox con valor 4 -> Posicionamiento

    Al buscar genero una URL de este tipo, con los valores de las categorias: http://www.urlprueba.com/?cat=3,4

    El tema es que la búsqueda me saca los resultados para ambos elementos y lo que quiero en este ejemplo es que me saque los posts que pertenecen a “Otros” y TAMBIÉN a “Posicionamiento”, pero saca los que pertenecen a “Otros” y a “Posicionamiento”, cualquiera de las dos categorías, no los que tienen ambas categorías.

    ¿Qué debo enviarle a WP para que haga este tipo de filtro? ¿Alguna idea?

    ¡Gracias!

  • #62155

    atiquetedeveloper
    Participante

    Por si alguien llega a este post buscando una solución, os cuento cómo lo he solucionado, gracias a este enlace: http://webstutorial.com/wordpress-multiple-category-search/content-management-system-cms/wordpress-cms

    Debemos copiar en el functions.php esta acción:

    add_action( 'parse_request', 'category_search_logic', 11 );
    function category_search_logic( $query ) {
    if ( ! isset( $query->query_vars[ 'cat' ] ) )
    return $query;
    // split cat query on a space to get IDs separated by '+' in URL
    $cats = explode( ' ', $query->query_vars[ 'cat' ] );
    if ( count( $cats ) > 1 ) {
    unset( $query->query_vars[ 'cat' ] );
    $query->query_vars[ 'category__and' ] = $cats;
    }
    return $query;
    }

    Esto lo que hace es aplicar la concatenación de categorias por el simbolo +. Tras implementar esta función, si hacéis: http://www.miblog.com/?cat=1+2
    Ya sólo os saldrán los posts que pertenezcan a ambas categorías.

    Evidentemente, se puede aplicar a formularios de búsqueda con la cadena de texto, tal como: http://www.miblog.com/?cat=1+2&s=internet

    En el post de referencia habla de que “+” es considerado como ” ” bajo algunos servidores, no ha sido mi caso. Si os ocurre, habría que parsearlo mediante la siguiente función:

    function check()
    {
    $url = $_SERVER["REQUEST_URI"];
    $query = str_replace(' ', '+', $url);
    if(isset($query) && ($query != $url))
    {
    header('Location:'.$query);
    }
    }

    add_action('parse_query', 'check');

  • #62164

    LGrusin
    Miembro

    Curioso, muchas gracias por compartirlo…

    Un saludo

El foro ‘Programación’ está cerrado y no se permiten nuevos debates ni respuestas.

Pin It on Pinterest