• ResueltoModerador almendron

    (@almendron)


    Uno de mis sitios es una Revista de Prensa y he creado una taxonomía llamada “autor” donde queda almacenado el nombre del autor de cada artículo. Además, hay una página donde se muestran todos los autores con el correspondiente enlace para mostrar sus respectivos artículos.

    Pues bien, me gustaría habilitar en esa página una búsqueda de autores de forma que, por ejemplo, si busco “Miguel” aparezcan todos los autores cuyo nombre contenga dicha palabra. Cada uno de los resultados debería ir con el enlace a sus artículos.
    Es decir, quiero hacer lo mismo que el propio WordPress ya hace cuando voy a “Entradas > Autor” y escribo en la caja de búsqueda.

    En resumen, necesito insertar una caja de búsqueda que busque en la taxonomía “autor” y devuelva todos los autores que contengan la palabra o palabras de búsqueda con su correspondiente enlace a sus artículos.

Viendo 15 respuestas - 1 de 15 (de 36 total)
  • Moderador LGrusin

    (@lgrusin)

    ¿No te sirve esto? Fijate en el código de ejemplo al final de la página.
    https://codex.wordpress.org/Function_Reference/wp_dropdown_users

    Un saludo

    Moderador almendron

    (@almendron)

    No me sirve @lgrusin. El desplegable es de “autores” de los posts pero en mi caso se trata de una taxonomía. Aunque la llame “autor”, es independiente del “author” de cada post.
    Te pongo la URL del listado de autores para que lo veas. Recuerda que ya hablamos de ello hace tiempo porque nos costó encontrar la forma de paginar: http://www.almendron.com/tribuna/archivo-por-autores/
    Lo que quiero ahora es poner un buscador en esa página tal y como explicaba al principio.
    Un saludo.

    Hay plugins que te dejar filtrar por taxonomías. Otra opción es programarlo a mano con una consulta a través de WP_Query, más completo pero más flexible.

    Yo lo he hecho en: http://www.eliasdj.com/sesiones-dj/. Los 4 desplegables son Taxonomías Personalizadas creadas por mí.

    Moderador almendron

    (@almendron)

    Tampoco me sirve un desplegable ya que hay más de 1500 registros. A ver si me explico mejor: yo no quiero que la gente seleccione uno u otro valor sino que introduzca una palabra y busque solo dentro de la taxonomía.
    Algo así como poner “get_search_form” personalizado.

    Moderador almendron

    (@almendron)

    Os pongo una par de imágenes para que resulte más fácil saber lo que estoy buscando.
    1.- En el Panel de administración de wordpress me voy a “Entradas > Autor”, donde “autor” es el nombre de la taxonomía (no confundir con el autor de cada post): http://www.almendron.com/compartir/query-taxonomia-1.jpg

    2.- En la caja de búsqueda introduzco la palabra “Edwards” y obtengo un listado con todos los términos que incluyen dicha palabra.
    http://www.almendron.com/compartir/query-taxonomia-2.jpg

    Pues eso es precisamente lo que quiero hacer.

    Si te he entendido, y mi respuesta sigue siendo válida. En mi caso son desplegables pero puede ser un campo de texto, claro (sobretodo si se hace a mano). El enlace era para que vieras un formulario de “búsqueda avanzado” con Taxonomías Personalizadas. Vamos, que existe y se puede hacer.

    Dependiendo de si sabes programar o no, tendrás que usar un plugin. Mira por aquí: http://j.mp/1PXP9DR

    No sé por qué no había visto las capturas. Veo que no quieres los artículos de los Autores que contengan ‘Miguel’, sino un listado de Autores que contentan ‘Miguel’. Pero bueno la respuesta viene a ser más o menos la misma: o plugin o programar.

    No sé si habrá algún plugin que lo haga, pero ahora mismo no conozco ninguno. Programando se puede hacer ‘fácil’, usando el valor introducido por el usuario en la función get_terms.

    Moderador almendron

    (@almendron)

    Correcto. Ahora falta lo fácil… 🙂
    ¿Cómo puedo pasar el valor introducido por el usuario en la función que mencionas?
    Dame alguna pista para que pueda ir investigando porque ahora mismo es que no tengo ni idea de como se puede hacer.
    Un saludo.

    Creo que get_terms() no es lo que necesitas. Esa función es para obtener los términos de una taxonomía asociados a un post, y tu parece que quieres lo contrario, obtener los posts asociados a términos de una taxonomía.

    Yo insertaría los valores introducidos por el usuario en el parámetro tax_query de WP_Query, bien en WP_Query directamente si es en loops secundarios o a través del action pre_get_posts si es para filtrar el loop principal.

    cybmeta, parece que no te has leído lo anterior. Es lo que yo le sugerí, pero no quiere encontrar artículos, sino autores (periodistas). Luego ya listará los artículos una vez localizado el Autor, ¿no almendron?

    Cierto, no leí todo. Jejeje, y además vine de otra descripción de la pregunta que realizó almendron en otro sitio. Entonces get_terms() o get_terms_by() parece la mejor opción.

    Moderador almendron

    (@almendron)

    Pero sigo teniendo el mismo problema. Todos los ejemplos que he visto acerca de esas funciones, incluyendo pre_get_posts, devuelven posts y no los valores de la propia taxonomía.
    Por defecto, wordpress busca dentro de la tabla donde se encuentran los posts y esto es precisamente lo que habría que cambiar. Se trataría, por tanto, de usar pre_get_posts para modificar la consulta de forma que buscara en la tabla wp_terms.
    Y eso es lo que yo no se hacer 🙁

    Moderador almendron

    (@almendron)

    Una búsqueda en Mysql sería por ejemplo así:
    SELECT * FROM wp_terms WHERE name LIKE '%Ger%' ORDER BY term_id DESC
    Lo que me devolvería cualquier “autor” que contuviera “Ger”.
    ¿cómo implemento esto en una página? ¿cómo recupero después el slug del resultado de la consulta para poder “construir” el enlace correspondiente.
    Esto es lo que yo no se hacer.

    Nunca lo he utilizado pero de acuerdo con el funcionamiento de get_terms() podrías utilizar el agumento name__like. Por ejemplo:

    get_terms( 'autor', [ 'name__like' => 'Ger' ] );

    Moderador almendron

    (@almendron)

    ¿y la caja de búsqueda donde el visitante introduce ‘Ger’? ¿cómo la modifico para que busque en wp_terms?

Viendo 15 respuestas - 1 de 15 (de 36 total)
  • El debate ‘Busqueda taxonomía’ está cerrado a nuevas respuestas.