Conectare la baza de date folosind fișierul wp-config din WordPress

3 mai 2012, 18:43:24
Vizualizări: 117K
Voturi: 10

Cum mă pot conecta la baza de date folosind fișierul wp-config.php?

Încerc să fac un script mai prietenos cu WordPress și am nevoie să mă conectez la baza de date, dar fără a instala scriptul ca plugin.

În principiu, am în scriptul meu

$host = "xxxxxxxxxxx"; //locația bazei de date
$user = "xxxxxxxxxxx"; //numele de utilizator pentru baza de date
$pass = "xxxxxxxxxxx"; //parola bazei de date
$db_name = "xxxxxxxx"; //numele bazei de date

//Conexiunea la baza de date
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);

Scriptul nu poate fi instalat ca plugin (ceea ce ar putea face lucrurile mai ușoare), așa că trebuie să mă conectez la baza de date folosind wp-config.php existent în instalare... Aveți idei?

Mulțumesc anticipat

Editare și Clarificare

1- Trebuie să folosesc wp-config.php așa cum este, fără modificări. 2- Scriptul va fi localizat la www.example.com/script/ 3- Nu poate fi făcut ca plugin deoarece nucleul scriptului necesită să fie accesat public fără nicio interfață de autentificare care să apară. 4- Întrebarea mea este, în esență, cum să mă conectez la baza de date folosind fișierul wp-config.php prin modificarea scriptului de mai sus.

4
Comentarii

Te rog să explici exact de ce nu este posibil ca plugin.

kaiser kaiser
4 mai 2012 10:53:05

Deoarece scriptul necesită să fie accesat public, nu în partea de administrare (nu va funcționa în orice folder precum wp-content/plugins deoarece poate apărea un ecran de logare).

user983248 user983248
4 mai 2012 13:28:14

Cred că ai putea dori să editezi întrebarea ta pentru a spune ce vrei să faci cu scriptul tău. Aproape orice este posibil ca un plugin :)

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

Validarea IPN pentru PayPal. Vezi, nu a funcționat pentru mine când am încercat din folderul Plugins, dar a funcționat dintr-un folder în afara întregii instalări WordPress

user983248 user983248
4 mai 2012 17:38:25
Toate răspunsurile la întrebare 2
7
12

Folosirea definițiilor setate de utilizator în wp-config:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

EDITARE: Deoarece scriptul tău este în afara mediului WordPress, ceea ce vrei să faci este să-l inițiezi înainte de a folosi definițiile din wp-config.

require_once('./calea/catre/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
4 mai 2012 03:43:42
Comentarii

Cum ai menționat în întrebarea ta, în prezent nu funcționează. Nu voi da vot negativ, dar te rog să te asiguri că răspunsul tău funcționează cu adevărat și arată unde greșește OP. Mulțumesc! :) Apropo: Bun venit pe WPSE și nu lăsa această mică observație din partea mea să te oprească din a răspunde la alte întrebări. Răspunsurile sunt întotdeauna apreciate.

kaiser kaiser
4 mai 2012 10:52:22

Conexiunea la baza de date funcționează. Problema din întrebarea mea este abstractizarea funcției care o apelează într-un fișier extern. Valorile pe care le folosesc aici sunt definite în wp-config.php pe care le folosești pentru a configura WordPress. Ai încercat măcar înainte să presupui că nu funcționează?

akamaozu akamaozu
4 mai 2012 12:55:00

Aceasta este puțin în afara întrebării inițiale

user983248 user983248
4 mai 2012 13:44:46

Ai încercat de fapt? Am avut exact aceeași problemă ca și tine (conectarea la baza de date) și am rezolvat-o folosind constantele definite în wp-config (cum ai cerut). Singura variabilă de care ai nevoie este $db_name, deoarece toate celelalte sunt deja în mediul WP datorită wp-config.php. Atâta timp cât mediul Wordpress este încărcat, ai acces complet la constantele definite.

edit: Scriptul tău este în afara mediului Wordpress?

akamaozu akamaozu
4 mai 2012 13:50:44

Da, te rog să citești ultima mea editare și mulțumesc că ți-ai luat timp

user983248 user983248
4 mai 2012 14:01:28

Nicio problemă. Am testat soluția mea și am editat răspunsul original pentru a reflecta asta.

akamaozu akamaozu
4 mai 2012 14:09:26

@Akamaozu: Voi accepta răspunsul tău ca fiind cel corect după ce vei edita codul din 'wp-blog-header.php' în 'wp-config.php', deoarece acesta este fișierul în discuție aici. Mulțumesc mult

user983248 user983248
4 mai 2012 18:02:43
Arată celelalte 2 comentarii
4

Puteți integra scriptul direct în postarea WordPress, folosind obiectul $wpdb oferit de WordPress. Obiectul $wpdb are deja conexiunea la baza de date stabilită și îl puteți utiliza pentru a efectua orice operațiuni pe baza de date: inserare, actualizare, interogare etc. Aceasta este metoda recomandată pentru lucrul cu baze de date în WordPress, deoarece nu este necesar să deschideți conexiuni suplimentare.

Iată un exemplu simplu pentru obținerea postărilor programate:

$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ți acest articol pentru informații suplimentare: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

5 apr. 2014 03:05:37
Comentarii

Când am eliminat linkul din răspunsul tău, nu am primit nicio informație despre care ar fi soluția reală, în afară de un indiciu că $wpdb poate efectua sarcini de bază cu baza de date. Ai putea, te rog, să îmbunătățești răspunsul tău pentru a arăta un exemplu de bază? Mulțumesc.

kaiser kaiser
5 apr. 2014 05:09:46

Articolul de acolo are o descriere foarte detaliată a obiectului $wpdb, așa că nu am vrut să copiez și să lipesc mult text acolo. Dar, în principiu, dacă scriptul tău face parte din WordPress, poți folosi obiectul $wpdb pentru a rula interogări la baza de date astfel:

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

Persoana care a pus întrebarea a clarificat mai târziu că nu dorește să facă un plugin, așa că răspunsul meu este mai puțin relevant acum, așa că am decis să-l las așa cum este.

obaranovsky obaranovsky
11 dec. 2014 02:21:25

Te rog să incluzi întotdeauna orice informație necesară în întrebare. Comentariile sunt curățate periodic. Oricum, am citit celălalt răspuns și întrebarea din nou și am dat -1 ambelor. Până acum, întrebarea originală încă arată ca o încercare de a hack-ui/infecta un site, iar celălalt răspuns este împotriva celor mai bune practici în fiecare linie.

kaiser kaiser
11 dec. 2014 03:36:14

În opinia mea, aceasta este soluția mai bună. Folosirea funcțiilor încorporate în WordPress este întotdeauna de preferat. După ce analizezi obiectul $wpdb, ar trebui să devină clar.

user3135691 user3135691
14 iun. 2017 16:14:26