X

Shortcode para búsqueda en tabla personalizada en WordPress

En artículos anteriores ya habíamos visto cómo buscar en una tabla personalizada, sin embargo ahora veremos cómo hacerlo usando un Shortcode y además sólo mostrar los datos que se buscan sin mostrar toda la información desde el inicio.
 

Resultado Final

Búsqueda por nombre, con múltiples resultados

 
Búsqueda por código con resultado único

 

Código para la búsqueda en tabla personalizada

En el siguiente código asumo que tienes una tabla personalizada en la base de datos de tu sitio web WordPress, puedes cambiar las variables para reflejar el nombre de tu tabla y los campos de búsqueda.

También puedes cambiar el HTML que se genera para que refleje los campos que quieres mostrar.

En el código anterior:

  • Utilizamos el hook init para crear un shortcode con la función add_shortcode()
  • El shortcode tendrá el nombre: search-form y hace referencia a la función dcms_search_form()
  • Dentro de la función dcms_search_form() configuramos los valores de las variables: $table_name, $field_search1, $field_search2
  • También se captura la variable $search del formulario
  • Con estas variables formamos la consulta SQL que nos devolverá los valores encontrados
  • Se crea el formulario con HTML
  • Si hay resultados, entonces también se crea la tabla HTML

Para agregar el código puedes usar un plugin de Snippets o el archivo functions.php de tu tema hijo.

 

Conclusión

Como has podido ver puedes integrar fácilmente la funcionalidad de búsqueda en una tabla personalizada en tu sitio web directamente a través de código.

 

Categorías: Themes

Ver comentarios (40)

  • Hola, Estimado amigo.
    Buenas tardes, eh visto su códigos y explicaciones y usted es un master, vera quería ver si m podría ayudar es un tema de universidad, eh creado una pagina para mi proyecto, donde los estudiantes puedan ver sus nota con solo poner las notas, pero ahora no se como hacer para ingresar los datos de los estudiantes como cedula, nombres apellidos y las calificaciones a una tabla de base de datos, será que me podría ayudar.

    Como hago para ingresar desde una pagina los datos de manera individual o de manera masiva mediante un .csv a la tabla que eh creado de la base de datos wordpress.

    De ante mano agradezco su ayuda

    • Hola, los plugins de importación usualmente trabajan con Custom Post Type, si has creado una tabla personalizada no podrás usar plugins y tendrás que hacerlo de la manera clásica con PHP, lo que si podrías usar es un hook de "admin_post_XXXXX", revisa este artículo de guía: https://decodecms.com/formulario-de-contacto-sin-plugins-en-wordpress/ , con respecto a llenar datos, lo mismo si es una tabla personalizada tendrás que usar código PHP directamente. Evaluaré hacer un artículo sobre esto.

      • Hola, Amigo.

        Genial, muchas gracias por su aporte, lo probare, en realizar lo que me comentas, y si ves estaría genial, un articulo sobre ese tema

  • Hola amigo, muchas gracias por tus aportes me ayudan mucho, quiero comentarte que estoy haciendo exactamente lo que me dices en el video, cambio los parametros, nombre de la tabla, los campos que quiero que busque, y me muestra el campo para inserta el texto y el boton de busqueda pero no me muestra ningun dato de la BD a la que me estoy conectadno no se si es problema de conexion con la base de datos o porque pasa esto, gracias quedo atento.

    • Hola, lo primero sería revisar el valor de la variable $sql, y pegar esa consulta en PHPMyAdmin y ver si te devuelve resultados.

  • Hola, disculpa envié este mensaje en otro post no relacionado con mi inquietud.
    Ahora sí, estoy en "Shortcode para búsqueda en tabla personalizada en WordPress"

    Implementé este código varias veces en entornos de pruebas locales limpios en Wordpress 6.0.1 y al insertar el shortcode en la página muestra el siguiente error al publicar/actualizar la página:
    "Ha fallado la actualización. Las respuesta no es una respuesta JSON válida."
    Aún así el código funciona pero no respeta el diseño de la página, es decir, se posiciona por encima de todos los bloques
    ¿Me puedes orientar en una solución?

  • Jhon muy buenas tardes, muchas por compartir tus conocimientos en esta pagina, han sido de gran ayuda.

    Tengo problemas para cargar el shorcode, al momento de abrir la pagina solo me esta visualizando o imprimiendo en pantalla el msj : search-form

    Gracias de antemano por tu colaboración

    • Hola, por lo que comentas no se esta interpretando el shortcode, te sugiero revisar el video cuidadosamente, es posible que en algún lugar haya algún paso que esta pendiente de realizarse.

  • Hola Jhon. Muy interesante tu aporte.
    Quisiera saber si esa bisqueda (el resultado de la busqueda) se puede editar

    • Hola, tal como esta el código no, necesitarías código adicional. Espero hacer un artículo próximamente sobre cómo realizar esto.

  • Saludos estimado..!! Agradecer por compartir tus conocimientos. Comentarte que copie el código en code snippet y genera error en la linea 25 donde se crea la tabla, no esta reconociendo las etiquetas html. debo instalar algún plugin para solucionar el error?. Agradezco la atención.

    • Hola, en el functions.php asegúrate de no tener ninguna etiqueta de cierre de PHP ya que es posible que al tener una etiqueta de cierre "?>", el código que agregues después no será interpretado correctamente.

  • Help..!! elimine la Etiqueta "?>" y agregue comillas simples desde hasta el final <?php endif '; y me indica que no es JSON..!!.
    Alguien que pueda enviarme el código ya compilado y funcionando..?? Agradezco la ayuda..!! mi e-mail jcgarecaruiz@gmail.com

    • Hola, mejor sube algunas imágenes a algún repositorio público y envía la url para revisar cómo agregaste el código.

  • cordial saludo Jhon Marremos,
    Estoy realizando el proceso; inicialmente aplico el codigo en la plantilla utilizada (functions.php) asi adjunto imagen
    https://photos.app.goo.gl/NfPUA1FuYhSnAvGQ8

    dicho codigo esta relacionado con los campos de la tabla cliente adjunto imagen
    https://photos.app.goo.gl/RVGJutv9TxJKSMHw8

    por segundo genero la pagina llamada cliente donde pego el shortcode adjunto imagen
    https://photos.app.goo.gl/bCMMe2LarNEuBync7

    una vez guardado los cambios y actualizo mi sitio web genera la caida completa del sitio web adjunto imagen
    https://photos.app.goo.gl/okxjipsa6BVgi1rr5
    bajo lo anterior no se que podria estarhaciendo mal ? agradesco su colaboracion

    • Hola, revisa el log de errores, o habilita la depuración de tu sitio, te genera un archivo debug.log dentro de la carpeta wp-content, con eso se puede ver en qué línea tienes problemas. Revisa: https://decodecms.com/habilitar-el-modo-debug-en-wordpress/
      PD. Siempre usa un editor de código que te facilite ver los errores y te resalte el código, usa por ejemplo Visual Studio Code que es gratuito.

  • Excelente aporte!

    El unico problema que tengo es que por celda no se muestran mas de 10 caracteres, independientemente si son numeros o texto, si tengo 2 o 20 columnas.

    • Hola, lo que comentas es posiblemente algo relacionado con el código CSS de tu tema (o de algún plugin), prueba cambiando temporalmente de tema, usando alguno de los que vienen por defecto y verifica. Saludos.

  • Hola, llevo algún tiempo intentando conectar mi base de datos para búsqueda con tu shortcode y hoy finalmente logré que apareciera el buscador, pero no me conecta a ningún dato.

    ¿Podrías ayudarme, por favor? No entiendo cuál puede llegar a ser el error.