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.