Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Filtro en la busqueda

Estas en el tema de Filtro en la busqueda en el foro de WordPress en Foros del Web. Hola amigos, tengo que crearle una pagina para un repuesto de un amigo y quiero saber como puedo mejorar el filtro de la busqueda. Por ...
  #1 (permalink)  
Antiguo 19/12/2013, 06:27
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Filtro en la busqueda

Hola amigos, tengo que crearle una pagina para un repuesto de un amigo y quiero saber como puedo mejorar el filtro de la busqueda. Por ejemplo:

La categoria "toyota" como tag le pongo el "año" y si es de 4 puertas o de 2 puertas o si es de algun color, mas o menos de esta forma.

Quiero que se filtre. Por ejemplo:

Busco toyota y que me de la opcion para que aparesca de esa marca si selecciono 2013 aparesca todo lo publicado del 2013 de la marca buscada que es toyota.

Aqui una imagene mas o menos.

  #2 (permalink)  
Antiguo 19/12/2013, 08:50
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Filtro en la busqueda

Pasá esos parámetros por GET y en la plantilla de búsqueda los procesas:

Código PHP:
Ver original
  1. <?php
  2. $otrofiltro= $_GET["filtro"];
  3. $tag = $_GET["tag"];
  4. $categoria = $_GET["cat"];
  5. $args = array(
  6.     'cat'      => $categoria,
  7.     'tag'     => $tag,
  8.         'meta_key'  => $otrofiltro
  9. );
  10. query_posts( $args );
  11. /* y el resto....*/
  12. ?>
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #3 (permalink)  
Antiguo 19/12/2013, 10:00
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 10 años, 4 meses
Puntos: 49
Respuesta: Filtro en la busqueda

Nekko te da la solución correcta. Pero si lo haces, utiliza query_vars para mayor seguridad y comodidad a la hora de pasar parámetros para consultas:

http://codex.wordpress.org/Function_.../get_query_var

Te dice como crear tus propias query_vars en caso de que quieras una especial:

http://codex.wordpress.org/Function_...tom_Query_Vars
  #4 (permalink)  
Antiguo 19/12/2013, 10:43
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por Nekko Ver Mensaje
Pasá esos parámetros por GET y en la plantilla de búsqueda los procesas:

Código PHP:
Ver original
  1. <?php
  2. $otrofiltro= $_GET["filtro"];
  3. $tag = $_GET["tag"];
  4. $categoria = $_GET["cat"];
  5. $args = array(
  6.     'cat'      => $categoria,
  7.     'tag'     => $tag,
  8.         'meta_key'  => $otrofiltro
  9. );
  10. query_posts( $args );
  11. /* y el resto....*/
  12. ?>
orientame mejor no se ni por donde empezar, soy novato
  #5 (permalink)  
Antiguo 19/12/2013, 19:08
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por Nekko Ver Mensaje
Pasá esos parámetros por GET y en la plantilla de búsqueda los procesas:

Código PHP:
Ver original
  1. <?php
  2. $otrofiltro= $_GET["filtro"];
  3. $tag = $_GET["tag"];
  4. $categoria = $_GET["cat"];
  5. $args = array(
  6.     'cat'      => $categoria,
  7.     'tag'     => $tag,
  8.         'meta_key'  => $otrofiltro
  9. );
  10. query_posts( $args );
  11. /* y el resto....*/
  12. ?>
Cita:
Iniciado por AlejandroGalvez Ver Mensaje
Nekko te da la solución correcta. Pero si lo haces, utiliza query_vars para mayor seguridad y comodidad a la hora de pasar parámetros para consultas:

http://codex.wordpress.org/Function_.../get_query_var

Te dice como crear tus propias query_vars en caso de que quieras una especial:

http://codex.wordpress.org/Function_...tom_Query_Vars
Bueno amigos buscando y buscando y leyendo logre armar esto:

Código PHP:
<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="<?php the_search_query(); ?>" placeholder="search&hellip;" maxlength="50" required="required" />
<select name="category_name">
<option value="">all categories</option>
<?php
// generate list of categories
$categories get_categories();
foreach (
$categories as $category) {
    echo 
'<option value="'$category->slug'">'$category->name"</option>\n";
}
?>
</select>
<select name="tag">
<option value="">any tag</option>
<?php
// generate list of tags
$tags get_tags();
foreach (
$tags as $tag) {
    echo 
'<option value="'$tag->slug'">'$tag->name"</option>\n";
}
?>
</select>
<button type="submit">Search</button>
</fieldset>
</form>
Pero no logro que cuando se seleccionen al darle click al boton submit no se queda seleccionado la categoria o el tag vuelve al value vacio y no al current, como lo puedo resolver?
  #6 (permalink)  
Antiguo 19/12/2013, 23:25
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años
Puntos: 1146
Respuesta: Filtro en la busqueda

así como envías los parámetros por get recuperalos con $_GET['name_var']
  #7 (permalink)  
Antiguo 20/12/2013, 10:31
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por ArturoGallegos Ver Mensaje
así como envías los parámetros por get recuperalos con $_GET['name_var']
algun ejemplo que me aclare algo mas de como obtenerlos?, si usted puede hacerme el favor.

Última edición por satanson123; 20/12/2013 a las 10:46
  #8 (permalink)  
Antiguo 20/12/2013, 11:05
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años
Puntos: 1146
Respuesta: Filtro en la busqueda

el ejemplo ya te lo he dado -> $_GET['nambe_var']

mas claro no se puede ser, ese es el código exacto que debes usar, igual puedes ver cientos de ejemplos si buscas en google

"como recuperar valores por get"

...........................

volviendo a leer creo que tambien pude/debi decirque lo que nececitas es hacer una comparativa dentro del foreach para indicarle cual debe estar seleccionado algo como
Código PHP:
Ver original
  1. $var1 = isset($_GET['var1'])?$_GET['var1']:'';
  2. if($varlor == $var1){...}else{...}

Última edición por ArturoGallegos; 20/12/2013 a las 19:22
  #9 (permalink)  
Antiguo 20/12/2013, 19:57
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por ArturoGallegos Ver Mensaje
el ejemplo ya te lo he dado -> $_GET['nambe_var']

mas claro no se puede ser, ese es el código exacto que debes usar, igual puedes ver cientos de ejemplos si buscas en google

"como recuperar valores por get"

...........................

volviendo a leer creo que tambien pude/debi decirque lo que nececitas es hacer una comparativa dentro del foreach para indicarle cual debe estar seleccionado algo como
Código PHP:
Ver original
  1. $var1 = isset($_GET['var1'])?$_GET['var1']:'';
  2. if($varlor == $var1){...}else{...}
creo que lo hago mal

Código PHP:
<?php
// generate list of categories
$categories get_categories();

foreach (
$categories as $category) {
    
$categories = isset($_GET["name"])?$_GET["name"]:"";
    
?>
    <option value="<?php echo $category->slug?>"><?php if($category->name == $categories){echo $category->name;}else{echo $category->name;}; ?></option>
    <?php
}
?>
  #10 (permalink)  
Antiguo 20/12/2013, 23:15
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años
Puntos: 1146
Respuesta: Filtro en la busqueda

no entiendo tu lógica, si es verdadero imprimes X y si es falso igual imprimes X ???

no debería ser si es verdadero X y si es falso Y ????

pregunta tonta, seguro que si sabes la respuesta....

en HTML como indentificas en un select cual de todas las opciones esta marcada y debe aparecer cuando no ha sido desplegado el listado???

sabiendo la respuesta a eso... que debes imprimir en X y que en Y según el resultado del IF ???
  #11 (permalink)  
Antiguo 21/12/2013, 09:04
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por ArturoGallegos Ver Mensaje
no entiendo tu lógica, si es verdadero imprimes X y si es falso igual imprimes X ???

no debería ser si es verdadero X y si es falso Y ????

pregunta tonta, seguro que si sabes la respuesta....

en HTML como indentificas en un select cual de todas las opciones esta marcada y debe aparecer cuando no ha sido desplegado el listado???

sabiendo la respuesta a eso... que debes imprimir en X y que en Y según el resultado del IF ???
el problema es que entiendo donde encaja "$_GET["name"]"
  #12 (permalink)  
Antiguo 21/12/2013, 10:02
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años
Puntos: 1146
Respuesta: Filtro en la busqueda

al asignar $_GET[] a una variable as colocado $categories=....
si ya tienes $categories y es un array no te compliques confundiendo tu cabeza creándolo de nuevo como una variable... aparte el valor obtenido no es un array y solo contiene UNA categoría en todo caso seria $category o $cat o $current_cat

si tu campo (input o select) tiene name="carro" porque al recuperar la variable quieres recuperar a name="patito" ???

y le rematamos que si has enviado $category->slug como valor a la URL porque quieres comparar el valor obtenido con $category->name ????


--------------------
dicho eso reitero mi pregunta.... en HTML tu sabes como marcar un elemento del select como seleccionado?

si no es así, estaré hablando con una pared y por mas que hable no me entenderá a menos que de el código cosa que no haré.... vamos yo se que tu aprenderás mas si te dejo hacerlo solo, solo es cuestión de pensar un poco.


Nota de ayuda:
si en el foreach imprimes <option value="xxx">xxx xxx xxx</option>
para crear cada elemento de la lista.... que debes agregar o quitar a este para que se marque como seleccionado?
  #13 (permalink)  
Antiguo 21/12/2013, 10:49
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por ArturoGallegos Ver Mensaje
dicho eso reitero mi pregunta.... en HTML tu sabes como marcar un elemento del select como seleccionado?
si es de esta forma si
Código PHP:
Ver original
  1. <option selected>---Elige---</option>

Última edición por satanson123; 21/12/2013 a las 10:54
  #14 (permalink)  
Antiguo 21/12/2013, 11:22
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por ArturoGallegos Ver Mensaje
al asignar $_GET[] a una variable as colocado $categories=....
si ya tienes $categories y es un array no te compliques confundiendo tu cabeza creándolo de nuevo como una variable... aparte el valor obtenido no es un array y solo contiene UNA categoría en todo caso seria $category o $cat o $current_cat

si tu campo (input o select) tiene name="carro" porque al recuperar la variable quieres recuperar a name="patito" ???

y le rematamos que si has enviado $category->slug como valor a la URL porque quieres comparar el valor obtenido con $category->name ????


--------------------
dicho eso reitero mi pregunta.... en HTML tu sabes como marcar un elemento del select como seleccionado?

si no es así, estaré hablando con una pared y por mas que hable no me entenderá a menos que de el código cosa que no haré.... vamos yo se que tu aprenderás mas si te dejo hacerlo solo, solo es cuestión de pensar un poco.


Nota de ayuda:
si en el foreach imprimes <option value="xxx">xxx xxx xxx</option>
para crear cada elemento de la lista.... que debes agregar o quitar a este para que se marque como seleccionado?
ustedes le gusta complicar las cosas, yo les pase mi problema en vez de ustedes decirme usa "$_GET["name"]" como si uno fuera un profesional, por no simplemente explican como hacerlo y van editando mi codigo codigo y explicando haci uno aprende mas, muchos sitios hacen eso. Me motivo mas de esa forma.

Este es el codigo completo:

Código PHP:
<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="<?php the_search_query(); ?>" placeholder="search&hellip;" maxlength="50" required="required" />
<select name="category_name">
<option value="">all categories</option>
<?php
// generate list of categories
$categories get_categories();
foreach (
$categories as $category) {
    echo 
'<option value="'$category->slug'">'$category->name"</option>\n";
}
?>
</select>
<select name="tag">
<option value="">any tag</option>
<?php
// generate list of tags
$tags get_tags();
foreach (
$tags as $tag) {
    echo 
'<option value="'$tag->slug'">'$tag->name"</option>\n";
}
?>
</select>
<button type="submit">Search</button>
</fieldset>
</form>
  #15 (permalink)  
Antiguo 21/12/2013, 11:48
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años
Puntos: 1146
Respuesta: Filtro en la busqueda

No nos gusta complicar las cosas, simplemente es un sitio de ayuda didactica... por donde le busques lo ideal es que te demos pistas y tu mismo aprendas, si editara el código y explicara estoy un 99% seguro en la mayoría de los casos se haría copy-paste y ni se molestan en aprender.

Pero si lo ponemos en ese plan, tu eres el que se complica contrata a alguien y paga por el trabajo que te lo resuelven en un instante.... es mas pagame 20 dolares y te lo resuelvo en unos minutos y te explico.... digo mi tiempo y trabajo me va costar, porque te lo he de regalar, nadamas porque tienes prisa y no quieres aprender???

---------------------

Bien si ya sabes que hay que agregar "selected" al elemento que debe estar seleccionado, ya sabes donde y como agregar el IF.

Explica porque no lo has hecho?

En tu ultimo código ni siquiera veo apliques un if como te dije.



Nota: marcar un elemento como seleccionado en un select de HTML, usar $_GET[] y/o $_POST[] no son cosas avanzadas, eso es de lo mas básico que cualquier novato que tenga 1 hora o menos de estar estudiando debería saber y entender... tomando en cuenta que estas estudiando un tema especifico.
  #16 (permalink)  
Antiguo 21/12/2013, 11:59
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por ArturoGallegos Ver Mensaje
No nos gusta complicar las cosas, simplemente es un sitio de ayuda didactica... por donde le busques lo ideal es que te demos pistas y tu mismo aprendas, si editara el código y explicara estoy un 99% seguro en la mayoría de los casos se haría copy-paste y ni se molestan en aprender.

Pero si lo ponemos en ese plan, tu eres el que se complica contrata a alguien y paga por el trabajo que te lo resuelven en un instante.... es mas pagame 20 dolares y te lo resuelvo en unos minutos y te explico.... digo mi tiempo y trabajo me va costar, porque te lo he de regalar, nadamas porque tienes prisa y no quieres aprender???

---------------------

Bien si ya sabes que hay que agregar "selected" al elemento que debe estar seleccionado, ya sabes donde y como agregar el IF.

Explica porque no lo has hecho?

En tu ultimo código ni siquiera veo apliques un if como te dije.



Nota: marcar un elemento como seleccionado en un select de HTML, usar $_GET[] y/o $_POST[] no son cosas avanzadas, eso es de lo mas básico que cualquier novato que tenga 1 hora o menos de estar estudiando debería saber y entender... tomando en cuenta que estas estudiando un tema especifico.
si me vasa cobrar 20 dolares una pagina debe salir por 2000
----------------------------------------------------------------------------------------------
yo pase el codigo que es el que quiero arreglar, y ese es el problema que se como poner el "IF" ni como ponerlo. Enseñame donde va por favor?.
  #17 (permalink)  
Antiguo 21/12/2013, 12:16
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años
Puntos: 1146
Respuesta: Filtro en la busqueda

Recapitulemos...
1.- puedes usar un if para tomar desiciones y agregar nuevo contenido.
estructura base a tu caso
Código PHP:
Ver original
  1. if($var1 == $var2){...}else{...}
2.- en un select marcas una opcion como seleccionada agregando selected="" a uno de sus elementos, solo puede estar seleccionada uno por obvias razones.
codigo base
Código HTML:
Ver original
  1. <option value="..." selected="">....</option>
3.- dentro del foreach usas $category->slug como valor a pasar por GET por ende ese valor sera el que compares
4.- conociendo lo anterior y ya tenias este codigo... que esta mal, que esta fuera de lugar y a donde hay que moverlo????
Código PHP:
Ver original
  1. <?php
  2. // generate list of categories
  3. $categories = get_categories();
  4.  
  5. foreach ($categories as $category) {
  6.     $categories = isset($_GET["name"])?$_GET["name"]:"";
  7.     ?>
  8.     <option value="<?php echo $category->slug; ?>"><?php if($category->name == $categories){echo $category->name;}else{echo $category->name;}; ?></option>
  9.     <?php
  10. }
  11. ?>


bien pues esa es tu tarea, piensa un rato o días si es necesario y si no puedes ya sabes a contratar a alguien.... no digo que me contrates a mi necesariamente, en este foro hay mucha gente capaz.

Nota: un if no requiere forzosamente tener un else bien puedes usar if(evaluar){...}
y no te dará ningún problema por no tener else{}

------------------------------------
Cita:
si me vasa cobrar 20 dolares una pagina debe salir por 2000
depende el tipo de pagina, si hay que meter diseño, si hay que meter contenido, usara CMS o hecho a la medida, cantidad de paginas, etc etc.... pero si, lo bueno cuesta...

Si va ser un trabajo completo claro que puede salir en 2000 o mas, todo depende el proyecto, que si quieres un sitio de 50usd con gusto lo desarrollo, el trabajo es trabajo y no lo rechazo, pero no has de esperar el mismo esmero, dedicación y calidad que uno de 2000...

quien quita y lo delego a alguno de mis amigos novatos que a veces me preguntan como hacer las cosas y quieren aprender.

................ por cierto los 20 dolares mencionados son 5 dolares por hacer el trabajo y 15 por explicarte.

Última edición por ArturoGallegos; 21/12/2013 a las 12:27
  #18 (permalink)  
Antiguo 21/12/2013, 12:45
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Filtro en la busqueda

El tema no es tan complicado, satanson123, al contrario es muy simple!!! De hecho, yo escribí tutoriales al respecto, basta con googlear un poco.

Tu pregunta en lo que respecta a WordPress fue respondida, ahora lo que necesitás es un conocimiento básico de PHP por lo que te recomiendo hacer un cursillo online.

Saludos
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #19 (permalink)  
Antiguo 21/12/2013, 13:20
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Filtro en la busqueda

Cita:
Iniciado por Nekko Ver Mensaje
El tema no es tan complicado, satanson123, al contrario es muy simple!!! De hecho, yo escribí tutoriales al respecto, basta con googlear un poco.

Tu pregunta en lo que respecta a WordPress fue respondida, ahora lo que necesitás es un conocimiento básico de PHP por lo que te recomiendo hacer un cursillo online.

Saludos
Dime de alguna pagina con un precio bien comodo (Ando flojo del bolsillo).
  #20 (permalink)  
Antiguo 21/12/2013, 13:43
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Filtro en la busqueda

Pero hombre, googleá "Curso PHP Gratis" y te van a aparecer docenas de ofertas! Además en tu caso quizás te convenga ir directo a lo que necesitás, alguna búsqueda del tipo "enviar y obtener variables usando GET" y vas a ver que te saltan muchos artículos claros sobre el tema.

Saludos!
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP

Etiquetas: busqueda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:47.