Páginas

miércoles, 19 de julio de 2017

Como acceder a la base de datos de wordpress desde php

Base de datos  En una entrega anterior mostré como podemos leer directamente un archivo PO desde php (sin usar las funciones nativas de Wordpress), ahora vemos como podemos acceder y manipular la base de datos de Wordpress directamente desde Php. Te invito a que sigas leyendo por favor este tutorial y dejes tus comentarios.


  Wordpress tiene funciones nativas para manipular una base de datos (de si mismo), pero si quisiéramos conectarnos a esa base de datos desde fuera de Wordpress (otro archivo php en el mismo servidor), podríamos:
  1. Heredar las funciones de Wordpress a nuestro archivo.
  2. Usar una pequeña librería que nos facilite el trabajo (cortesía de un servidor).
<?
    
 include("../../../wp-config.php");
 include("db.php");

 global $table_prefix;

 $conn = dbconnect(DB_HOST, DB_NAME, DB_USER, DB_PASSWORD);

//Borrar o actualizar datos de una tabla de Wordpress

mysql_query($SQL_SENTENCE);

//Leer datos mediante una sentencia SQL desde una tabla de Wordpress

$rs = @dbfetch_array($SQL_QUERY_SENTENCE, $conn);

if($rs != NULL) $rst = mysql_fetch_array($rs);

if($rst != NULL) @mysql_data_seek($rs, 0);
  
//Si queremos unicamente leer un campo del primer registro
$data = $rst["FIELDNAME"];

//Si queremos leer todos los registros

while($rst = mysql_fetch_array($rs))
{

  $data1 = $rst["FIELDNAME1"];

  $data2 = $rst["FIELDNAME2"];

}


$rst = null;

$rs = null;
$conn = null;

?>

 Como pueden ver el procedimiento es muy simple, primero incluimos en nuestro archivo php, la configuración de wordpress con la línea include("../../../wp-config.php"); , esto corresponde a tres directorios atrás de la ruta de nuestro tema en php, ejemplo /wp-content/themes/nuestrotema , en la carpeta "nuestrotema" debemos poner el archivo php personalizado que accederá a la base de datos de Wordpress, si cambiamos la ruta, entonces debemos ajustar está línea que menciono a fin de poder encontrar el archivo de configuración.

Posteriormente usaremos la librería para conectar a la base de datos:
include("db.php");

Analizemos el interior del archivo db.php

<?

// este código está basado en http://www.webestilo.com/php/php07c.phtml


/**** CONECTAR A LA BASE DE DATOS ****/

function dbconnect($dbhost, $dbname, $dbusername, $dbpassword)
{

     if(!($conn = mysql_connect(trim($dbhost), trim($dbusername), trim($dbpassword))))

     {

       $connection = null;

       echo "Error, no se a podido conectar con la base de datos, revise su configuraci&oacute;n...";
       exit();
  
     }
    else
       $connection = $conn;
   
    if(!mysql_select_db(trim($dbname), $conn))
    {

        $connection = null;

     echo "Error, no se a podido seleccionar la base de datos en &eacute;ste momento, por favor, int&eacute;ntelo m&aacute;s tarde.";
       exit();
  
     }
     else
      $connection = $conn;
   
     return $connection;

  }

  /**** CONECTAR A LA BASE DE DATOS ****/

  /**** RECUPERAR REGISTROS DE LA BASE DE DATOS ****/

  function dbfetch_array($SQL, $connection)
  {
     return @mysql_query($SQL, $connection);
  }
  /**** RECUPERAR REGISTROS DE LA BASE DE DATOS ****/

?>


  Esta librería una vez establecida la conexión a la base de datos, nos permite poder leer los registros de la misma de un modo sencillo, nos regresa un array con todos los registros, posteriormente ya en nuestro archivo php los leeremos de forma secuencial y los aplicaremos como gustemos.

Espero les sea de mucha utilidad.

Procedencia de las imágenes:
File: Logo base de datos 
URL: https://icons8.com/icon/1475/database
Licencia: Creative Commons

¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.

4 comentarios:

  1. perfecto, ahora ya se el codigo de conexion a base de datos de tipo mysql

    ResponderBorrar
  2. Muchas gracias por la info Juan! :D

    Un saludo colega!

    ResponderBorrar
  3. Por nada, que bueno que les ha sido de utilidad.

    ResponderBorrar
  4. En WP no suelen recomendar que se conecte directamente al MySQL. Eventualmente WordPress podría soportar otro motor de base de datos y el código dejar de funcionar.

    Para ello, exponen el objeto wpdb: https://codex.wordpress.org/Class_Reference/wpdb

    ResponderBorrar