PHP - Filtro PHP en un category.php

 
Vista:

Filtro PHP en un category.php

Publicado por Patricio Caldeorn (1 intervención) el 23/01/2020 14:53:30
Hola estimados, estoy terminando el desarrollo de un sitio y nos pidieron ingresar unos filtros para una categoria en especial la que está en esta url https://lagencia.cl/youthtools/category/youth-champions/

Ahora si bien esa es la categoria principal, debo filtrar las categorias secundarias las cuales ahí son dos las que se muestran en el campo Select, hasta ahora me filtra sólo el pais pero no la profesión. Habia hecho un duplicado pero no se en que estoy fallando. Alguna idea??? Les dejo los PHP mas el JS que inclui...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/category/youth-champions/' ); ?>">
    <select id="categoria" onchange="leaveChange()">
        <option value="search-type">Filter by country</option>
        <option value="angola">Angola</option>
        <option value="algeria">Algeria</option>
        <option value="benin">Benin</option>
    </select>
    <input id="hidden" type="hidden" name="search-type" value="search-type" />
    <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'GO', 'submit button' ) ?>" />
</form>
 
 
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/category/youth-champions/' ); ?>">
    <select id="categoria-dos" onchange="leaveChange()">
        <option value="search-type">Filter by profession</option>
        <option value="aquaculture">Aquaculture</option>
        <option value="Apiculture">Apiculture</option>
        <option value="Tourism">Tourism</option>
    </select>
    <input id="hidden-dos" type="hidden" name="search-type" value="search-type" />
    <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'GO', 'submit button' ) ?>" />
</form>
 
<script type="text/javascript">
    function leaveChange() {
        var categoria = $("#categoria :selected").val();
        document.getElementById('hidden').value = categoria;
    }
</script>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de José Manuel
Val: 150
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Filtro PHP en un category.php

Publicado por José Manuel (62 intervenciones) el 27/01/2020 18:15:35
Hola Patricio:

Ambos select llaman en el evento onchange a la función JavaScript que has creado: leaveChange(). En ella, seleccionas al primer select (#categoria) pero no al segundo (#categoria-dos).

Del mismo modo, el valor seleccionado lo pasa a un campo oculto con id = "hidden" que es del primer formulario. No tienes en cuenta el campo con id = "hidden-dos".

El problema está ahí si no me equivoco. Te pongo un ejemplo aproximado (no puedo hacer pruebas) de una posible solución que tendrás que terminar de implementar tú:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
    function leaveChange(id_select) {
        var categoria = $("#" + id_select + " :selected").val();
        var oculto = "";
 
        if(id_select == "categoria"){
           oculto = "hidden";
        } else if(id_select == "categoria-dos"){
           oculto = "hidden-dos";
        }
 
        document.getElementById(oculto).value = categoria;
    }
</script>


Por otro lado, deberías ponerlo todo en un mismo formulario, no dos que tienen el mismo action además. Igualmente, tienes campos cuyo id y name difieren cuando el name se repite entre campos diferentes. Cuando envíes el formulario no te va a funcionar correctamente.

Espero haberte orientado al menos. Un saludo,
https://obelearningservices.com/blog/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar