Conectare la baza de date folosind fișierul wp-config din WordPress
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.

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

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.

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ă?

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?

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

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

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/

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.

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.

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.
