¿Tienes una tabla de base de datos que te gustaría mostrar en tu sitio WordPress?, en este artículo aprenderás como mostrar esos datos en una página de forma sencilla a través de código.
Resultado Final
Al final obtendremos algo similar a lo que se muestra en la siguiente imagen.

Generalidades
WordPress puede acceder a cualquier tabla de su base de datos de manera simple, incluso las que no forman parte del propio WordPress o plugins.
En este ejemplo asumimos que tenemos una tabla con el nombre data_fruit esta tabla contiene los siguientes campos: fruit_id, name, variety
Para mostrar los datos usaremos una página llamada Frutas y tiene el slug frutas
Código para mostrar datos de una tabla de la base de datos
El siguiente código muestra los datos de una tabla en una página de WordPress.
En el código anterior:
- Usamos el hook the_content que hace referencia a la función dcms_list_data
- Dentro de esta función hacemos una comprobación con la función is_page() ya que sólo nos interesa mostrar los datos en esa página
- Usamos la variable global $wpdb, a través de este objeto obtenemos métodos para recuperar los datos
- Formamos el resultado de los datos en la variable $result
- Construimos la tabla en la variable $template
- Al final reemplazamos la plantilla con los datos obtenidos y concatenamos con el resto del contenido
Conclusión
Tal como has visto, puedes obtener datos desde una tabla externa a WordPress y mostrarla como parte del contenido de una página de manera simple y sin usar plugins.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
Hola buenas tardes,
Tienes alguno que haga lo que esta en el video,pero que a la vez permita hacer update al contenido.
Gracias,
Hola, la actualización de contenido es un poco más compleja, evaluaré hacer un artículo de esto, puedes igualmente usar algún plugin como: https://www.joomunited.com/wordpress-products/wp-table-manager
¿y el código en la página?
¿[dcms_list_data]?
¿Es correcto si añado un archivo nuevo en wp-content/plugins/functions.php? (empieza por )
Hola, el código no crea un shortcode, usa un Hook para colocar los datos al final del contenido de la página.
El archivo functions.php es un archivo de tu theme, no existe un archivo functions.php en esa localización que mencionas y así lo crees no tendrá efecto.
Fantástico, ya funciona. Enhora buena.
Ahora va algo más difícil:
httpClient permite ejecutar la consulta automáticamente desde fuera de la web.
Los header (textos de la barra superior) sirven de filtro (localhost/fruit/?ID=1). Solo mostraría una fila del informe.
En este caso entiendo que toda la linea tiene un valor. ¿Se pueden usar headers de alguna forma?
Sé que me estoy pasando contigo. Tu respuesta ha sido definitiva antes.
Hola, en el código se forma la cabecera o header de la tabla a través de la variable de $template, podrías modificar ese código de acuerdo a tus necesidades.
Súper.. Por favor necesito codigo de una lista desplegable de paises y que cuando seleccione el pais muestre cuatro imagenes cada una con su respectiva descripcion…Agradezco su ayuda
Hola, no me queda claro lo de mostrar cuatro imágenes, sin embargo la primera parte de tu consulta se refiere a filtros, evaluaré hacer un artículo de filtros próximamente. Saludos.
Hola, he visto tu video tutorial, y con ayuda de el, lo que intento es mostrar en una pagina, los pedidos de woocommerce…
Esta es mi consulta:
$items = $wpdb->get_results( «SELECT order_item_name, order_item_type, order_id FROM {$wpdb->prefix}woocommerce_order_items», ARRAY_A );
Cuando hago var_dump me funciona pero cuando ocupo el foreach para recorrerlo y mostrarlo, no me muestra nada…
Nose si para mostrar datos de la base de tablas que no es personalizada tiene alguna otra forma…. pero no me funciona ;<
Hola
Estas recuperando la información como array asociativo, posiblemente estes tratando de recuperarlo como modelo de objeto. Prueba quitando ARRAY_A , o en su defecto usa la sintaxis de array para recuperar los datos.
Saludos.
Hola John,
Gracias por compartir tu conocimiento.
Copié tu código e hice los ajustes, pero solo veo los títulos de la tabla.
Mi sitio y base de datos están alojados en GoDaddy.
Debo hacer algo más para dirigir el query a la BD?
Hola, no, con el código debería ser suficiente, revisa si el nombre de la tabla de la BD es correcta y si tienes datos.
Hola, soy nuevo con WordPress y estoy haciendo un sitio donde en una de las secciones pretendo poner un formulario para recoger datos específicos sobre un tema particular y los guardo en la base de datos, el problema es mostrarlos cómo podría mostrar esos datos y que sólo aparezcan a la persona que los introdujo, es decir que respondan a un sistema de membresía?
Hola, en este caso tendrías que adicionar a los datos el ID del usuario que lo registró y de esa al consultar podrías agregar un filtro por ID de usuario.
Hola Jhon, pero como seria eso ? osea en la where de la query pongo el Label que filtra ???
Una consulta me sale perfecto el ejemplo. Quisiera agregar un filtro por algun campo en espefico? en la página que debo usar para que tome el filtro.
Hola, algo práctico que podrías evaluar es usar un filtro por jquery, ya que los datos estan cargados simplemente sería un filtro en base a esos datos mostrados, revisa: https://www.w3schools.com/jquery/jquery_filters.asp
Hola muy bueno tu video muchas gracias por compartir tu conocimiento y experiencia, no se si se puede con este ejemplo pero como le hago para que en lugar de que me aparezca la info de la base de datos en automatico como le hago para me aparezca, ya sea manzana, platano etc… realizando una busqueda o consuta …
Hola, evaluaré hacer un artículo para esto ya que implica código adicional. De manera general si quieres realizar la búsqueda en los registros ya cargados lo más práctico sería filtrarlos con javascript, si son muchos registros con paginación sería una nueva consulta a la BD.
Hola Jhon ¿llegaste hacer el artículo nuevo para consultar los datos desde un buscador? Con un buscador sería genial.
Hola, lo tengo pendiente, permanece atento que seguro pronto reviso eso. Saludos.
Hola! muy bueno el video. Quería consultarte cómo tendría que hacer si quiero tomar información desde otra base de datos, es decir, que convivan la DB de wordpress y otra de donde levantar una lista de productos.
Muchas gracias de antemano!
Hola, si tienes acceso a la BD tienes que realizar una conexión a la BD que te interesa por PHP directamente desde WordPress, sin embargo lo usual es que te conectes por una API, esto te facilitaría las cosas y tendrías una mejor administración.
hola,como obtengo le valor del campo de busqueda en mi plantilla y la envio a la consulta mysql gracias
Hola, supongo que te refieres a la búsqueda de WordPress, verás que se crea un parámetro como parte de la url con la variable «s» cada vez que realizas una búsqueda.
Hola, muy bueno todo. una pregunta… en la variable Template esta recogido q coga el tema actual, o el css para la tabla. pero he tratado de cambiar el tamaño de la tabla pero no me deja, o sea no se efectua. Me puedes decir como cambiar el tamaño ? a la hora de mostrar a tabla. gracias
Hola, lo que comentas sería por CSS, es posible que tu theme este aplicando estilos por defecto, podrías inspeccionar los estilos con el inspector de código, revisa: https://decodecms.com/usar-el-inspector-de-codigo-para-modificar-un-theme-wordpress/
hola, como puedo crear un buscador por palabras o colocar filtro a esa tabla? gracias
Hola, podrías hacerlo por javascript si es que cargas todos los datos y no son muchos, de otra forma sería hacer paginación y hacer búsquedas con consultas SQL, espero hacer algo similar pronto en otro artículo.
Hola Jhon, nuevamente agradeciendo todo lo que nos compartes. Quisiera hacerte una consulta.
Estoy recibiendo datos de una encuesta realizada con Ninja Forms y requiero utilizar ciertos datos para crear un tipo expediente médico que se muestre en una de las páginas de WP.
Afortunadamente Ninja Forms almacena directamente las respuestas en la base de datos de WP pero las he encontrado en nf_sub que es un post_type. Entonces no sé si se pudiera aplicar esto de la tabla para elegir esos datos.
También es necesario que los datos mostrados en la tabla o expediente médico vayan acorde al usuario loggeado. ¿Me podrías guiar un poco sobre cómo lograr algo así?
Muchísimas gracias.
Hola, podrías consultar a la tabla wp_post y filtrar por el campo post_type, la otra opción es usar las funciones de WordPress que te filtran por post type, revisa la clase WP Query. Sin embargo si tienes un dato de usuario como parte de los datos que te guarda el formulario mejor hacer la consulta directamente con SQL
Gracias Jhon, lo pongo a prueba.
Muy buen video, bien explicado. Una consulta como puedo hacer si quiero mostrar el listado de una tabla que pertenece a otra base de datos en el mismo hosting?
Hola, tendrías que hacer otra conexión de BD, espero hacer un video pronto sobre esto.