Conéctese a la base de datos usando el archivo wordpress wp-config

8

¿Cómo puedo conectarme a la base de datos usando el archivo wp-config.php?

Estoy tratando de hacer un script más amigable con Wordpress, y necesito conectarme a la base de datos, pero sin instalar el script como complemento.

Básicamente tengo en mi guión

$host = "xxxxxxxxxxx"; //database location
$user = "xxxxxxxxxxx"; //database username
$pass = "xxxxxxxxxxx"; //database password
$db_name = "xxxxxxxx"; //database name

//Database Connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);

El script no se puede instalar como un complemento (lo que puede hacer las cosas más fáciles), por lo que necesito conectarme a la base de datos usando el wp-config.php existente en la instalación ... ¿Alguna idea?

Gracias por adelantado

Edición y aclaración

1- Necesito usar wp-config.php tal como está, sin modificaciones. 2- El script se ubicará en www.example.com/script/ 3- No se puede hacer como un complemento ya que el núcleo del script requiere acceso público sin ninguna pantalla de inicio de sesión. 4- Mi pregunta básicamente es cómo conectarse a la base de datos usando el archivo wp-config.php modificando el script anterior.

usuario983248
fuente
1
Explica por qué exactamente no es posible como complemento.
Kaiser
Debido a que el script requiere acceso público, no desde el lado del administrador (no funcionará en ninguna carpeta como wp-content / plugins ya que puede aparecer una pantalla de inicio de sesión).
user983248
Creo que es posible que desee editar su pregunta para decir qué quiere hacer con su secuencia de comandos. Prácticamente todo es posible como complemento :)
Stephen Harris
Validación de IPN para Paypal, mira, no funcionó para mí mientras lo hacía desde la carpeta Plugins, pero sí desde una carpeta fuera de toda la instalación de Wordpress
user983248

Respuestas:

10

Usando el define que el usuario establece en wp-config:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

EDITAR : Dado que su script está fuera del entorno de Wordpress, lo que desea hacer es iniciarlo antes de usar las definiciones en wp-config.

require_once('./path/to/the/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
akamaozu
fuente
1
Lo cual dijiste que actualmente no funciona en tu propia pregunta. No voy a votar negativamente, pero asegúrese de que su respuesta realmente funcione y muestre lo que el OP hace mal. ¡Gracias! :) Por cierto: Bienvenido a WPSE y no dejes que ese pequeño empujón de mi parte te impida responder otras preguntas. Responder es siempre muy apreciado.
Kaiser
La conexión a la base de datos funciona. El problema en mi pregunta es abstraer la función que lo llama a un archivo externo. Los valores que estoy usando aquí son conjuntos definidos en los wp-config.phpque usas para configurar Wordpress. ¿Al menos lo probaste antes de asumir que no funciona?
akamaozu
Esto está un poco alejado de la pregunta original
usuario983248
¿Realmente lo has intentado? Tuve exactamente el mismo problema que tienes (conectando a la base de datos) y lo resolví usando los conjuntos definidos por wp-config (como solicitaste) . La única variable que necesita es $ db_name, ya que todos los demás ya están en el entorno WP gracias a wp-config.php. Mientras el entorno de Wordpress esté cargado, tendrá acceso total a las definiciones. editar: ¿Está su script fuera del entorno de Wordpress?
akamaozu
Sí, lea mi última edición y gracias por tomarse el tiempo
Usuario983248
3

Puede hacer que su script sea parte de su publicación de WordPress, solo use el $wpdbobjeto proporcionado por el propio WordPress. El $wpdbobjeto ya tiene establecida la conexión de la base de datos y puede usarla para realizar cualquier operación de la base de datos: insertar, actualizar, consultar, etc. Este es un método preferible para hacer sus cosas de base de datos dentro de WordPress ya que no tiene que abrir ninguna conexión de base de datos adicional. .

Aquí hay un ejemplo simple para obtener las publicaciones futuras, por ejemplo:

$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");

Consulte este artículo para obtener información adicional: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

obaranovsky
fuente
1
Cuando elimino el enlace de su respuesta, no recibo información sobre cuál sería la solución real, aparte de una pista que $wpdbpuede realizar tareas básicas de la base de datos. ¿Le importaría mejorar su respuesta para mostrar algún ejemplo básico? Gracias.
kaiser
El artículo allí tiene una descripción muy detallada del $wpdbobjeto, por lo que no quería cortar y pegar mucho texto allí. Pero, básicamente, si su script es parte de WordPress, puede usar el $wpdbobjeto para ejecutar las consultas de la base de datos de esta manera: $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 desea que sea un complemento, por lo que mi respuesta es menos relevante ahora, así que decidí dejarlo como está.
obaranovsky
Por favor siempre ponga cualquier información que uno necesite en la pregunta. Los comentarios se limpian regularmente. De todos modos, leí la otra respuesta y la pregunta de nuevo y les hice ambas preguntas. Por ahora, la pregunta original todavía parece un intento de piratear / infectar un sitio y la otra respuesta está en contra de las mejores prácticas en cada línea.
kaiser
Esta es la mejor solución en mi opinión. Siempre es preferible utilizar las funciones integradas de WordPress. Después de buscar en $ wpdb Object, debería quedar claro.
user3135691