¿Cómo usar múltiples bases de datos en WordPress?

22 sept 2012, 09:59:53
Vistas: 24.6K
Votos: 3

Quiero obtener algunas entradas de otro sitio WordPress que está alojado en el mismo servidor. ¿Cómo puedo obtener esas entradas?

¿Es posible tener múltiples conexiones de base de datos en WordPress?

Sí, es posible usar múltiples bases de datos en WordPress. Aquí hay algunas formas de hacerlo:

1. Usando una segunda conexión en functions.php

// Crear una segunda conexión a la base de datos
function get_db2() {
    static $db;
    if (!isset($db)) {
        $db = new wpdb('usuario2', 'contraseña2', 'nombre_db2', 'localhost');
    }
    return $db;
}

// Ejemplo de uso
function get_posts_from_other_site() {
    $db2 = get_db2();
    $prefix = 'wp_'; // prefijo de la otra base de datos
    
    $posts = $db2->get_results("
        SELECT * FROM {$prefix}posts 
        WHERE post_type = 'post' 
        AND post_status = 'publish'
        LIMIT 10
    ");
    
    return $posts;
}

2. Usando el archivo wp-config.php

// Definir constantes para la segunda base de datos
define('DB2_NAME', 'nombre_segunda_db');
define('DB2_USER', 'usuario_db2');
define('DB2_PASSWORD', 'contraseña_db2');
define('DB2_HOST', 'localhost');

// Crear la conexión cuando sea necesaria
global $wpdb2;
$wpdb2 = new wpdb(DB2_USER, DB2_PASSWORD, DB2_NAME, DB2_HOST);

También puedes considerar estas alternativas:

  • Usar la API REST de WordPress si el otro sitio la tiene habilitada
  • Implementar una conexión entre sitios usando WordPress Multisite
  • Utilizar tablas personalizadas en la misma base de datos

Recuerda siempre manejar las conexiones de base de datos de forma segura y cerrarlas cuando no se necesiten para evitar problemas de rendimiento.

0
Todas las respuestas a la pregunta 3
2

Es posible pero debes crear manualmente una nueva instancia de la clase wpdb con la configuración correcta para tu otra base de datos.

Cita de la página del Codex sobre wpdb:

El objeto $wpdb puede comunicarse con cualquier número de tablas, pero solo con una base de datos: la base de datos de WordPress. En el raro caso de que necesites conectarte a otra base de datos, tendrás que instanciar tu propio objeto de la clase wpdb con los detalles de conexión apropiados. Para configuraciones extremadamente complicadas con muchas bases de datos, considera usar hyperdb en su lugar.

22 sept 2012 13:21:36
Comentarios

Gracias Hamid por tu respuesta. He creado una nueva instancia de la clase global wpdb y funciona correctamente.

soumendu soumendu
24 sept 2012 14:46:35

No es Hamid, mi nombre es Hamed. Y de nada. Podrías marcar esta respuesta como la correcta.

2hamed 2hamed
25 sept 2012 19:42:44
0

Puedes usar HyperDB: https://wordpress.org/plugins/hyperdb/ Permite múltiples bases de datos, también réplicas de lectura/escritura o configuraciones maestro/esclavo.

13 jun 2017 11:47:10
0

1) Descargar la clase db en el enlace: https://codeshack.io/super-fast-php-mysql-database-class/ - renombrar class db = db_custom

2) .../themes/nombre-del-tema/functions.php

$dbhost = 'db_ip'; // 127.0.0.1 $dbuser = 'db_user'; // ingresar nombre de usuario de la base de datos $dbpass = 'db_user_password'; // ingresar tu contraseña de base de datos $dbname = 'db_user_name'; // ingresar el nombre de tu base de datos

$db_watch = new db_custom($dbhost, $dbuser, $dbpass, $dbname); $sql = "SELECT * FROM products LIMIT 0,2"; $results = $db_watch->query($sql)->fetchAll(); print_r($results);

He probado mi sitio WordPress y funciona correctamente

21 abr 2020 13:34:48