Connettersi al database utilizzando il file wp-config di WordPress
Come posso connettermi al database utilizzando il file wp-config.php?
Sto cercando di rendere uno script più compatibile con WordPress e ho bisogno di connettermi al database, ma senza installare lo script come plugin.
In pratica nel mio script ho:
$host = "xxxxxxxxxxx"; //posizione del database
$user = "xxxxxxxxxxx"; //nome utente del database
$pass = "xxxxxxxxxxx"; //password del database
$db_name = "xxxxxxxx"; //nome del database
//Connessione al Database
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);
Lo script non può essere installato come plugin (cosa che potrebbe rendere le cose più semplici), quindi ho bisogno di connettermi al database utilizzando il wp-config.php esistente nell'installazione... Qualche idea???
Grazie in anticipo
Modifica e Chiarimento
1- Ho bisogno di utilizzare wp-config.php così com'è, senza modifiche. 2- Lo script sarà collocato in www.example.com/script/ 3- Non può essere fatto come plugin poiché il core dello script richiede di essere accessibile pubblicamente senza alcuna schermata di login. 4- La mia domanda è essenzialmente come connettersi al database utilizzando il file wp-config.php modificando lo script sopra riportato.
Utilizzando le costanti definite dall'utente in wp-config:
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
MODIFICA: Dato che il tuo script è esterno all'ambiente Wordpress, ciò che devi fare è includerlo prima di utilizzare le costanti definite in wp-config.
require_once('./percorso/del/file/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

Hai affermato che attualmente non funziona nella tua stessa domanda. Non voterò negativamente, ma assicurati che la tua risposta funzioni davvero e mostri dove l'OP sbaglia. Grazie! :) A proposito: benvenuto su WPSE e non lasciare che questo mio piccolo incoraggiamento ti trattenga dal rispondere ad altre domande. Rispondere è sempre molto apprezzato.

La connessione al database funziona. Il problema nella mia domanda è astrarre la funzione che la richiama in un file esterno. I valori che sto usando qui sono definizioni impostate in wp-config.php
che usi per configurare Wordpress. Hai almeno provato prima di assumere che non funzioni?

L'hai effettivamente provato? Avevo esattamente lo stesso problema che hai tu (connessione al database) e l'ho risolto utilizzando le define impostate da wp-config (come hai richiesto). L'unica variabile di cui hai bisogno è $db_name, dato che tutto il resto è già nell'ambiente WP grazie a wp-config.php
. Finché l'ambiente Wordpress è caricato, hai accesso completo alle define.
modifica: Il tuo script è fuori dall'ambiente Wordpress?

Sì, per favore leggi la mia ultima modifica, e grazie per aver dedicato del tempo

Nessun problema. Ho testato la mia soluzione e modificato la risposta originale per rifletterla.

Puoi integrare il tuo script come parte del tuo articolo WordPress, basta utilizzare l'oggetto $wpdb
fornito da WordPress stesso. L'oggetto $wpdb
ha già la connessione al database stabilita e puoi usarlo per eseguire qualsiasi operazione sul database: inserimento, aggiornamento, query, ecc... Questo è il metodo preferibile per lavorare con il database all'interno di WordPress poiché non devi aprire ulteriori connessioni al database.
Ecco un semplice esempio per ottenere i post futuri ad esempio:
$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 questo articolo per ulteriori informazioni: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

Quando rimuovo il link dalla tua risposta, non ottengo informazioni sulla soluzione effettiva, a parte un accenno al fatto che $wpdb
può eseguire operazioni di base sul database. Potresti migliorare la tua risposta mostrando un esempio di base? Grazie.

L'articolo citato contiene una descrizione molto dettagliata dell'oggetto $wpdb
, quindi non volevo copiare e incollare molto testo. Ma fondamentalmente, se il tuo script fa parte di WordPress, puoi usare l'oggetto $wpdb
per eseguire query sul database in questo modo:
`$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 che ha posto la domanda ha successivamente chiarito che non vuole creare un plugin, quindi la mia risposta è meno rilevante ora e ho deciso di lasciarla così com'è.

Per favore, includi sempre tutte le informazioni necessarie direttamente nella domanda. I commenti vengono periodicamente ripuliti. Comunque, ho riletto l'altra risposta e la domanda e ho dato -1 a entrambe. A questo punto, la domanda originale sembra ancora un tentativo di hackerare/infettare un sito e l'altra risposta va contro le migliori pratiche in ogni singola riga.
