En un artículo anterior habíamos visto cómo leer datos desde una tabla personalizada en la misma base de datos de WordPress, sin embargo ¿qué modificaciones son necesarias si la base de datos es otra?.
Resultado Final
Al final queremos obtener algo similar a la siguiente imagen.

Código para conectarse a otra BD
Para conectarse a una BD nueva podemos usar una conexión estándar de PHP, sin embargo en el entorno de WordPress podemos usar la clase wpdb, de esta forma podemos seguir usando los métodos de esta clase para gestionar los datos.
$mydb = new wpdb($database_user, $database_pass, $database_name, $database_server);
Código de ejemplo
El siguiente código lee la tabla tbl_employee desde una base de datos externa llamada employee y muestra los datos en una página llamada empleados
En el código anterior:
- Utilizo el Hook the_content el cual hace referencia a la función dcms_list_data
- Dentro de la función se definen los datos de conexión de BD, así como el nombre de la tabla a consultar
- Además se define el nombre de la página en donde se mostrarán los datos
- Se realiza la conexión creando una nueva instancia de la clase wpdb en la variable $mydb
- Usamos la variable $mydb para llamar al método para recuperar datos
- Dentro del bucle for definimos los campos de la tabla a consultar
- Finalmente concatenemos todo, el contenido y los datos y devolvemos el nuevo contenido
Conclusión
Si no tienes una API para leer datos externos, conectarte directamente a la base de datos puede ser tu única alternativa, como hemos visto, puedes seguir usando la funcionalidad de WordPress para gestionar estos datos, ya que se puede realizar una conexión con la clase wpdb.
buen día, me parecen muy buenos tus tutoriales y la información que compartes. tengo una consulta
en mi trabajo me pidieron hacer una tabla y en esa tabla tener una opción para mostrar mas detalles de la misma tabla, ósea, tengo mi tabla en una base de datos con información (id, nombre, motivo, monto, link) y en la pagina en mi tabla solo muestro (nombre y motivo). mi pregunta consulta es como puedo hacer para mostrar toda la tabla ya con la información faltante, pero como si fuera una ventana modal (así como lo que muestras en la tabla empleados, pero como una ventana emergente).
saludos 🙂
Hola, lo primero sería ver cómo se esta mostrando, el código y la consulta SQL que se usa, de esta forma podrías modificarlo y agregar los campos faltantes, en caso no se estén recuperando. Para lo del modal pudes usar algún plugin o código para mostrar un lightbox.
Saludos
buen día, excelente contenido, tengo una consulta para insertar registros ala base de datos wordpress como seria
Hola Noe, evaluaré hacer inserciones y actualizaciones en un nuevo artículo, de momento puedes revisar este artículo que guarda datos en un CPT: https://decodecms.com/guardar-datos-de-formulario-de-contacto-sin-plugins/
Buen día
Su articulo es de mucha ayuda pero quisiera saber como hacer para mostrar de dos o mas tablas
Puedes hacer una consulta SQL que relacione ambas tablas, es decir la consulta SQL ya debería darte los datos que quieres. Saludos.
Buenas noches.
He copiado el código y lo he sustituido en mi página y me da un error que no entiendo por qué foreach() argument must be of type array|object, null given in
No he hecho nada más que sustituir los datos. Podrías ayudarme?
Gracias de antemano
Mi código es
Hola, lo que sucede es que posiblemente no hay datos en la variable $items, revisa tu consulta SQL, usa algún administrador de BD como PHPMyAdmin para probar antes tu consulta, para depurar en WordPress revisa: https://decodecms.com/depurar-codigo-php-en-wordpress/
Hola.. Muchas gracias por la información me ha sido de gran ayuda. Queria consultarte como puedo visualizar el resultado de la consulta, editando las páginas con Elementor, es decir, no requiero que la consulta se muestre como un listado en una tabla, sino que, la información de cada registro se visualice como en bloques o cajas.
Hola, para integrarlo con Elementor podrías evaluar hacerlo con un shortcode.
Aunque si quieres mostrarlo de otra forma visual, no necesitas Elementor para eso, sólo sería darle el aspecto que gustas con HTML y CSS.
Estaria excelente que hicieras una para altas, bajas y cambios desde wordpress a una base de datos externa o distinta.
Hola Carlos
Si, suena interesante lo que comentas lo evaluaré para un futuro artículo. Saludos.
Hola, para un login con una base de datos externa como seria? con o sin elementor, no encuentro nada al respecto, por favor.
Hola, Elementor en este caso no tiene que ver, el acceso restringido a un recurso externo usualmente se hace a través de una API y no directamente, especialmente si la BD no esta en el mismo servidor.
Hola Jhon, estoy intentando conectar la bd de un sistema de restaurante ( está en un server local ) para guardar los datos en wordpress y luego mostrarlos en una página.
Ya ví el artículo de cómo guardar los datos desde un formulario de contacto, pero tendrás alguno para guardarlos desde otra bd, otra cosa, para mostrarlo estoy armando un “esqueleto” con un diseño donde quiero que cada campo de ese menú se muestre en un espacio predeterminado, ósea, no sería una tabla, es posible crear algo como un short code y pegarlo en los espacios que necesito ?
Saludos y Gracias
Hola, tu sitio web WordPress estará en un servidor remoto, no veo como podrías leer los datos que tienes un tu servidor local.
Para desarrollo local te puede servir, pero una vez muevas el sitio posiblemente tengas problemas.
Lo normal en este tipo de casos es usar APIs en lugar de conexiones directas a la base de datos.
La conexión a base de datos desde otro sistema se hace para servicios que que están en el mismo servidor, de otra forma tendrás que solicitar a tu hosting que te abra puertos para conexión con BD y podría implicar problemas de seguridad.
Hola Jhon, muy útil su artículo. Me gustaría preguntarle, si hay alguna forma en WordPress de llamar a un dato en concreto con algún shortcode o similar desde front end para colocarlo en un lugar específico, independientemente de la página donde se encuentre (slug).
Gracias y un saludo
Hola Jaime, si claro, revisa este artículo de guía, en donde se crea un shortcode para mostrar información https://decodecms.com/shortcode-para-busqueda-en-tabla-personalizada-en-wordpress/
Hola el codigo funciona el tema es que aparece de igual forma si la pagina está protegida con clave.
Hola, tengo una duda.
Tengo una web en wordpress donde quiero integrar un login, este va a una pagina donde los usuarios hacen un login(el actual) en otro url, y que cuando hagan login vayan al sitio de wordpress.
o la otra solución es como conectar una base de datos o API al de wordpress? para que estos usuarios puedan ingresar al contenido oculto de wordpress
Saludos
Hola, esto que planteas es interesante, evaluaré hacer algunos artículos sobre eso.