Connettiti al database usando il file wp-config di wordpress


8

Come posso collegarmi al database usando il file wp-config.php?

Sto cercando di rendere uno script più intuitivo per Wordpress e devo collegarmi al database, ma senza installare lo script come plugin.

Fondamentalmente ho sulla mia sceneggiatura

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

Lo script non può essere installato come plugin (il che può rendere le cose più facili), quindi devo collegarmi al database usando il wp-config.php esistente sull'installazione ... Qualche idea ???

Grazie in anticipo

Modifica e chiarimenti

1- Ho bisogno di usare wp-config.php così com'è, nessuna modifica. 2- Lo script si trova all'indirizzo www.example.com/script/ 3- Non può essere eseguito come plug-in poiché il nucleo dello script richiede l'accesso pubblico senza alcuna schermata di accesso. 4- La mia domanda è sostanzialmente come connettersi al database usando il file wp-config.php modificando lo script sopra.


1
Spiega perché esattamente non è possibile come plugin.
Kaiser

Poiché è necessario accedere pubblicamente allo script, non sul lato amministratore (non funzionerà su alcuna cartella come wp-content / plugins poiché potrebbe comparire una schermata di accesso).
user983248

Penso che potresti voler modificare la tua domanda per dire cosa vuoi fare con la tua sceneggiatura. Praticamente tutto è possibile come plug-in :)
Stephen Harris,

Convalida IPN per Paypal, vedi, non ha funzionato per me mentre lo facevo dalla cartella Plugin, ma sì da una cartella al di fuori dell'intera installazione di Wordpress
user983248

Risposte:


10

Utilizzando il definisce l'utente imposta in wp-config:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

EDIT : Poiché il tuo script è al di fuori dell'ambiente Wordpress, quello che vuoi fare è avviarlo prima di usare il define in wp-config.

require_once('./path/to/the/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

1
Che hai dichiarato che al momento non funziona nella tua domanda. Non sottovaluteremo, ma per favore assicurati che la tua risposta funzioni davvero e mostri ciò che l'OP commette. Grazie! :) Btw: Benvenuto in WPSE e non lasciare che quella piccola spinta da parte mia ti trattenga dal rispondere ad altre domande. La risposta è sempre molto apprezzata.
Kaiser

La connessione al database funziona. Il problema nella mia domanda è l'astrazione della funzione che lo chiama a un file esterno. I valori che sto usando qui sono definiti in wp-config.phpcui si utilizza Wordpress. Almeno l'hai provato prima di presumere che non funzioni?
Akamaozu,

Questo è un po 'fuori dalla domanda originale
user983248

L'hai provato davvero? Ho avuto esattamente lo stesso problema che hai (connettendomi al database) e l'ho risolto usando le definizioni impostate da wp-config (come hai richiesto) . L'unica variabile di cui hai bisogno è $ db_name, poiché tutto il resto è già nell'ambiente WP grazie a wp-config.php. Finché l'ambiente Wordpress è caricato, hai accesso totale alle definizioni. modifica: il tuo script è al di fuori dell'ambiente Wordpress?
Akamaozu,

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

3

Puoi rendere il tuo script parte del tuo post WordPress, basta usare l' $wpdboggetto fornito dallo stesso WordPress. L' $wpdboggetto ha già stabilito la connessione al database e puoi usarlo per eseguire qualsiasi operazione del database: inserire, aggiornare, interrogare ecc ... Questo è il metodo preferibile per fare cose DB all'interno di WordPress in quanto non è necessario aprire ulteriori connessioni al database .

Ecco un semplice esempio per ottenere ad esempio i post futuri:

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

Dai un'occhiata a questo articolo per ulteriori informazioni: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/


1
Quando rimuovo il link dalla tua risposta, non ho avuto informazioni su quale sarebbe la soluzione effettiva, a parte un suggerimento che $wpdbpuò eseguire attività di base sul database. Ti dispiacerebbe migliorare la tua risposta per mostrare alcuni esempi di base? Grazie.
Kaiser

L'articolo contiene una descrizione molto dettagliata $wpdbdell'oggetto, quindi non volevo tagliare e incollare molto testo lì. Ma fondamentalmente se il tuo script fa parte di WordPress, puoi usare l' $wpdboggetto per eseguire le query del 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 chiarito in seguito che non vuole trasformarlo in un plugin, quindi la mia risposta è ora meno rilevante, quindi ho deciso di lasciarlo così com'è.
Obaranovsky,

Inserisci sempre tutte le informazioni di cui hai bisogno nella domanda. I commenti vengono ripuliti regolarmente. Comunque, ho letto di nuovo l'altra risposta e la domanda e le ho fatte entrambe. Ormai la domanda originale sembra ancora un tentativo di hackerare / infettare un sito e l'altra risposta è contro le migliori pratiche in ogni singola riga.
Kaiser,

Questa è la soluzione migliore secondo me. Utilizzare sempre le funzioni integrate di WordPress è sempre preferibile. Dopo aver esaminato l'oggetto $ wpdb, dovrebbe essere chiaro.
user3135691
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.