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
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.
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.
Este es basicamente mi error, pero no entiendo tu solución. 🙁
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?
Hola, el error que comentas no creo que tenga que ver con el código, más bien parece ser algo relacionado con las urls permanentes, tal como se comenta en esta artículo: https://www.igestweb.es/paginas-web/resolviendo-el-fallo-en-wordpress-de-respuesta-json-valida/
Hola, gracias
Intenté lo de los enlaces pero seguía igual, el problema eran son los bloques, no entiendo por qué.
Instalé el Editor clásico, TinyMCE Advanced ya no aparece el mensaje “Ha fallado la actualización. Las respuesta no es una respuesta JSON válida.”
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.
Hola María, revisa tu consulta SQL, si habilitas la depuración de WordPress debería darte más información de los errores. https://decodecms.com/habilitar-el-modo-debug-en-wordpress/
Warning: Undefined variable $items in /home4/bodegaje/public_html/wp-content/themes/astra-child/functions.php on line 53
Éste es el error, revisé pero la linea está tal cual indicas aquí.
Jhon, aprecio mucho tus tutoriales, son de inmensa utilidad. Siguiendo con la idea de este tutorial cómo debería hacer para agregar un botón que me lleve a una página dentro del mismo blog, para que el usuario pueda ver más detalles?
Gracias de antemano por su repuesta
Hola Omar, entiendo que quieres tener una columna adicional en los registros de búsqueda con un enlace a alguna otra página, en ese caso simplemente agrégalo como parte de los datos, es decir, crearías una columna de cabecera adicional con la etiequeta HTML th y los datos con td, luego el enlace lo construirías con HTML.
Muchas gracias
Hola muchas gracias por tus aportes, implemente tu código para el shortcode en mi web en local y me pasaron muchas cosas, se rompió la web, me sale que no está definida la variable items y así… Logre hacer que funcione el código pero ahora cuando realiza la búsqueda genera una redirección a la entrada predeterminada de WordPress con el mensaje “¡Hola mundo!” ya no sé qué hacer, espero me puedas ayudar. EStoy utilizando el tema Astra, o no sé si deba al formato de las URL de la página.
Es raro que te redireccione, entiendo que tienes las urls amigables habilitadas y no tienes ningún plugin de redirecciones o similar. Revisa en la url que tengas un parámetro llamado: “search” en la url de búsqueda.
Buenas, el año pasado segui tu tutorial paso a paso y me funciono perfectamente, pero ahora de buenas a primeras ya no me funciona, siempre utilizo el tema ASTRA, que podria ser?
Hola, debe haber algo que hiciste diferente, revisa cuidadosamente el código, vuelve a revisar el video, habilita la depuración para tener una idea de que errores se generan.
Hola, alguien le funciona tengo los mismos errores de JSON