• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Leer datos desde otra base de datos en WordPress

Leer datos desde otra base de datos en WordPress

Leer datos desde otra base de datos en WordPress

[ 21 enero 2021 ] [ Autor: Jhon Marreros Guzmán ][ Core - Intermedio] [ ]

funcionalidad mejoras

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

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.

Leer datos BD externa WordPress

 

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.
 

¿Aún con dudas?, en el siguiente video se implementa el ejemplo en un sitio web de pruebas.

Suscríbete a DecodeCMS:  

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Mostrar Tabla Personalizada con Búsqueda y Paginación en WordPressMostrar Tabla Personalizada con Búsqueda y Paginación en WordPress
  • Búsqueda en tabla personalizada en WordPressBúsqueda en tabla personalizada en WordPress
  • Mostrar datos desde una tabla personalizada de la base de datos de WordPressMostrar datos desde una tabla personalizada de la base de datos de WordPress
  • Cómo optimizar las revisiones en WordPressCómo optimizar las revisiones en WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (4 votos, promedio: 4,25 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. daniel sanchez

    28 julio, 2021

    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 🙂

    • Jhon Marreros Guzmán

      30 julio, 2021

      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

  2. Noe Perez

    9 diciembre, 2021

    buen día, excelente contenido, tengo una consulta para insertar registros ala base de datos wordpress como seria

    • Jhon Marreros Guzmán

      9 diciembre, 2021

      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/

  3. juan diaz

    17 febrero, 2022

    Buen día
    Su articulo es de mucha ayuda pero quisiera saber como hacer para mostrar de dos o mas tablas

    • Jhon Marreros Guzmán

      18 febrero, 2022

      Puedes hacer una consulta SQL que relacione ambas tablas, es decir la consulta SQL ya debería darte los datos que quieres. Saludos.

  4. Gaby

    5 abril, 2022

    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

    
    add_filter( 'the_content', 'dcms_list_data' );
    
    function dcms_list_data( $content ) {
    	$database_name = 'festivales'; // nombre de la base de datos
    	$database_user = 'root';
    	$database_pass = 'root';
    	$database_server = 'localhost';
    
    	$table_name = 'festival'; // nombre de la tabla
    	$slug_page = 'festivalesbd'; //slug de la página en donde se mostrará la tabla
    
    	if (is_page($slug_page)){
    
    		$mydb = new wpdb($database_user, $database_pass, $database_name, $database_server);
    		$items = $mydb->get_results("SELECT * FROM '$table_name'");
    		
    		// nombre de los campos de la tabla
    		$result="";
    		foreach ($items as $item) {
    			$print("dentro");
    			$result .= '
    				'.$item->nombre_fest.'
    				'.$item->genero.'
    				'.$item->fecha_inicio.'
    				'.$item->fecha_fin.'
    			';
    		}
    
    		$template = '
    			          
    			            Nombre
    			            Género
    			            Fecha inicio
    			            Fecha fin
    			          
    			          {data}
    			        ';
    
    	    return $content.str_replace('{data}', $result, $template);
    	}
    
    	return $content;
    }
    
    • Jhon Marreros Guzmán

      8 abril, 2022

      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/

  5. Paola

    6 abril, 2022

    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.

    • Jhon Marreros Guzmán

      8 abril, 2022

      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.

  6. Carlos

    25 mayo, 2022

    Estaria excelente que hicieras una para altas, bajas y cambios desde wordpress a una base de datos externa o distinta.

    • Jhon Marreros Guzmán

      25 mayo, 2022

      Hola Carlos
      Si, suena interesante lo que comentas lo evaluaré para un futuro artículo. Saludos.

  7. hiram

    28 mayo, 2022

    Hola, para un login con una base de datos externa como seria? con o sin elementor, no encuentro nada al respecto, por favor.

    • Jhon Marreros Guzmán

      31 mayo, 2022

      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.

  8. Aragua Online

    31 enero, 2023

    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

    • Jhon Marreros Guzmán

      1 febrero, 2023

      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.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

Agregar .HTML al final de URL en WordPress

Animación de saltos de enlace en WordPress

Restringir productos por país en WooCommerce a través de código

Interceptar correos enviados en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados