Connettersi al database utilizzando il file wp-config di WordPress

3 mag 2012, 18:43:24
Visualizzazioni: 117K
Voti: 10

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.

4
Commenti

Per favore spiega perché esattamente non è possibile come plugin.

kaiser kaiser
4 mag 2012 10:53:05

Perché lo script richiede di essere accessibile pubblicamente, non nella parte amministrativa (non funzionerà in cartelle come wp-content/plugins poiché potrebbe apparire una schermata di login).

user983248 user983248
4 mag 2012 13:28:14

Penso che dovresti modificare la tua domanda per specificare cosa vuoi fare con il tuo script. Praticamente qualsiasi cosa è possibile come plugin :)

Stephen Harris Stephen Harris
4 mag 2012 16:19:53

Validazione IPN per Paypal, Vedi, non ha funzionato per me mentre lo facevo dalla cartella Plugins, ma sì da una cartella esterna all'intera installazione di Wordpress

user983248 user983248
4 mag 2012 17:38:25
Tutte le risposte alla domanda 2
7
12

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);
4 mag 2012 03:43:42
Commenti

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.

kaiser kaiser
4 mag 2012 10:52:22

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?

akamaozu akamaozu
4 mag 2012 12:55:00

Questo è un po' fuori dalla domanda originale

user983248 user983248
4 mag 2012 13:44:46

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?

akamaozu akamaozu
4 mag 2012 13:50:44

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

user983248 user983248
4 mag 2012 14:01:28

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

akamaozu akamaozu
4 mag 2012 14:09:26

@Akamaozu: Accetterò la tua risposta come quella corretta dopo che avrai modificato il codice da 'wp-blog-header.php' a 'wp-config.php' poiché è questo il file in questione qui. Grazie mille

user983248 user983248
4 mag 2012 18:02:43
Mostra i restanti 2 commenti
4

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/

5 apr 2014 03:05:37
Commenti

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.

kaiser kaiser
5 apr 2014 05:09:46

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'è.

obaranovsky obaranovsky
11 dic 2014 02:21:25

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.

kaiser kaiser
11 dic 2014 03:36:14

Questa è la soluzione migliore secondo me. Utilizzare le funzioni integrate di WordPress è sempre preferibile. Dopo aver esaminato l'oggetto $wpdb dovrebbe diventare chiaro.

user3135691 user3135691
14 giu 2017 16:14:26