Conectar a la base de datos usando el archivo wp-config de WordPress
¿Cómo puedo conectarme a la base de datos usando el archivo wp-config.php?
Estoy tratando de hacer un script más compatible con WordPress, y necesito conectarme a la base de datos, pero sin instalar el script como un plugin.
Básicamente tengo en mi script
$host = "xxxxxxxxxxx"; //ubicación de la base de datos
$user = "xxxxxxxxxxx"; //nombre de usuario de la base de datos
$pass = "xxxxxxxxxxx"; //contraseña de la base de datos
$db_name = "xxxxxxxx"; //nombre de la base de datos
//Conexión a la Base de datos
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);
El script no puede ser instalado como un plugin (lo cual podría hacer las cosas más fáciles), así que necesito conectarme a la base de datos usando el wp-config.php existente en la instalación... ¿Alguna idea?
Gracias de antemano
Edición y Aclaración
1- Necesito usar wp-config.php tal como está, sin modificaciones. 2- El script estará ubicado en www.example.com/script/ 3- No se puede hacer como un plugin ya que el núcleo del script requiere ser accedido públicamente sin ninguna pantalla de inicio de sesión intermedia. 4- Mi pregunta básicamente es cómo conectarme a la base de datos usando el archivo wp-config.php modificando el script anterior.

Utilizando las definiciones que el usuario establece en wp-config:
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
EDITADO: Dado que tu script está fuera del entorno de Wordpress, lo que debes hacer es iniciarlo antes de usar las definiciones en wp-config.
require_once('./ruta/hacia/el/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

Como mencionaste, actualmente no funciona en tu propia pregunta. No voy a votar en contra, pero por favor asegúrate de que tu respuesta realmente funcione y muestre lo que el OP está haciendo mal. ¡Gracias! :) Por cierto: Bienvenido/a a WPSE y no dejes que este pequeño empujón mío te detenga para responder otras preguntas. Responder siempre es muy apreciado.

La conexión a la base de datos funciona. El problema en mi pregunta es abstraer la función que la llama a un archivo externo. Los valores que estoy usando aquí son constantes definidas en wp-config.php
que se usan para configurar WordPress. ¿Al menos lo probaste antes de asumir que no funciona?

¿Realmente lo has probado? Tenía exactamente el mismo problema que tú (conectando a la base de datos) y lo resolví usando los defines establecidos por wp-config (como solicitaste). La única variable que necesitas es $db_name, ya que el resto ya están en el entorno de WP gracias a wp-config.php
. Mientras el entorno de Wordpress esté cargado, tienes acceso total a los defines.
edición: ¿Está tu script fuera del entorno de Wordpress?

No hay problema. Probé mi solución y edité la respuesta original para reflejarlo.

Puedes hacer que tu script sea parte de tu publicación de WordPress, solo usa el objeto $wpdb
proporcionado por el propio WordPress. El objeto $wpdb
ya tiene establecida la conexión a la base de datos y puedes usarlo para realizar cualquier operación en la base de datos: insertar, actualizar, consultar, etc. Este es el método preferido para trabajar con la base de datos dentro de WordPress, ya que no necesitas abrir conexiones adicionales a la base de datos.
Aquí tienes un ejemplo sencillo para obtener, por ejemplo, las publicaciones programadas:
$posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4");
Consulta este artículo para más información: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

Cuando elimino el enlace de tu respuesta, no obtuve información sobre cuál sería la solución real, aparte de una pista de que $wpdb
puede realizar tareas básicas de base de datos. ¿Te importaría mejorar tu respuesta para mostrar algún ejemplo básico? Gracias.

El artículo allí tiene una descripción muy detallada del objeto $wpdb
, así que no quise copiar y pegar mucho texto allí. Pero básicamente, si tu script es parte de WordPress, puedes usar el objeto $wpdb
para ejecutar consultas a la base de datos así:
`$posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4");`
La persona que hizo la pregunta aclaró más tarde que no quiere convertirlo en un plugin, por lo que mi respuesta es menos relevante ahora, así que decidí dejarla como está.

Por favor, siempre incluye cualquier información que alguien necesite en la pregunta. Los comentarios se limpian regularmente. De todos modos, leí la otra respuesta y la pregunta nuevamente y les puse -1 a ambas. Hasta ahora, la pregunta original todavía parece un intento de hackear/infectar un sitio y la otra respuesta va en contra de las mejores prácticas en cada línea.
