X

Mostrar datos desde una tabla personalizada de la base de datos de WordPress

¿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.

Si te interesa tener funcionalidad de paginación y búsqueda revisa el siguiente artículo: Mostrar Tabla Personalizada con Búsqueda y Paginación en WordPress

 

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

Un slug o alias es un texto sin caracteres especiales que viene después del nombre de dominio y que forma parte de la url, WordPress transforma automáticamente el título en slug

 

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

Puedes agregar este código al final del archivo functions.php de tu tema hijo, o a través de un plugin de Snippets

Si deseas agregar una búsqueda a los datos que se muestran, puedes revisar el artículo Búsqueda en tabla personalizada en WordPress

 

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.

 

Categorías: Themes

Ver comentarios (79)

  • Hola buenas tardes,

    Tienes alguno que haga lo que esta en el video,pero que a la vez permita hacer update al contenido.

    Gracias,

  • ¿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.

  • 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 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! 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.