Scrierea de interogări personalizate în WordPress

Cu interogări personalizate puteți face orice citire și / sau manipulare de date dorită. În mod instantaneu se deschide o lume a noilor posibilități.


De ce să utilizați interogările personalizate?

Funcțiile de bază ale WordPress sunt bune pentru cele mai simple nevoi, dar ce ați face dacă doriți să implementați anumite nevoi specifice? Poți scrie un plugin, poate? Apoi, ar trebui să înveți cum puteți folosi interogările SQL în WordPress chiar acum! Referințele oficiale pot fi găsite în Codex-ul WordPress (Custom Queries și clasa WPDB).


wpdb Clasă

Această clasă globală WordPress este cheia pentru utilizarea interogărilor. De fapt, fiecare funcție folosește această clasă.


Utilizarea întrebare

Funcția de interogare are nevoie de un șir care conține interogarea personalizată. Valoarea returnată este un număr întreg corespunzător numărului de rânduri afectate / selectate și false atunci când există o eroare.

 $ query = "SELECT COUNT (măr) din fructe"; $ Wpdb-> interogare ($ query);

get_results

Această funcție are mai multe rânduri atunci când execută o interogare. În mod implicit, rezultatul funcției este o matrice.

 $ interogare = "SELECT * FROM wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id WHERE wtt.taxonomy = 'post_tag' ȘI wtt.count = 0"; $ Wpdb-> get_results ($ interogare);

get_var

Aceasta va returna o variabilă din baza de date, dar rezultatul complet al interogării este stocat în cache pentru o utilizare ulterioară. Returnează NULL dacă nu se găsește niciun rezultat.

 $ query = "SELECT COUNT (*) de la utilizatori"; $ Wpdb-> get_var ($ query);

get_row

Un rând complet va fi returnat ca urmare a funcției, care poate fi un obiect, o matrice asociativă sau o matrice indexată numeric. NULL este rezultatul când nu s-au găsit date potrivite. result_type poate fi OBIECT, ARRAY_A sau ARRAY_N (obiect, matrice asociativă sau matrice numerotată). Offset este un număr întreg cu o valoare implicită de 0.

 $ interogare = "SELECT * FROM wp_posts WHERE post_type = 'post'"; $ wpdb-> get_row ($ interogare, ARRAY_A, 3);

get_col

Pentru a obține o coloană, utilizați această funcție. Ieșirea va fi o matrice dimensională. O matrice goală va fi returnată dacă nu se găsește niciun rezultat. Al doilea parametru este offsetul coloanei.

 $ interogare = "SELECT * FROM wp_posts WHERE post_type = 'post'"; $ wpdb-> get_col ($ interogare, 3);

Întrebări pregătite

În conformitate cu manualul php.net:

"[Întrebările pregătite] pot fi considerate ca un tip de șablon compilat pentru SQL pe care o aplicație dorește să o execute, care poate fi personalizată utilizând parametri variabili".

Puteți proteja interogările SQL împotriva atacurilor de tip SQL. Datele scurte din interogări trebuie să fie scoase din SQL înainte ca interogarea să fie executată pentru a preveni atacurile prin injectare. Acest lucru se poate face cu ușurință prin metoda de pregătire. În exemplul următor, valorile "10", "maimuță" și "mere" vor fi scăpate atunci când sunt utilizate în această metodă.

 // Utilizare: $ wpdb-> prepare ('interogare' [, parametru_valoare, valoare_parametru ...]); $ wpdb-> interogare ($ wpdb-> prepare ("INSERT INTO test_table (post_id, animal, food) VALORI (% d,% s,% s) ;

Setarea mesajelor de eroare

Puteți activa și dezactiva mesajele de eroare cu show_errors și hide_errors funcții, dar puteți de asemenea să imprimați:

 $ Wpdb-> show_errors (); $ Wpdb-> hide_errors ();

Controlul cache-ului

Ștergerea memoriei cache poate fi făcută cu culoare funcţie.

 $ Wpdb-> flush ();

Introducerea datelor

 $ wpdb-> inserați ($ table, $ date, $ format); $ wpdb-> insert ('alimente', array ('fruit' => 'apple', 'year' => 2012), array ('% s', '% d'));

Parametrii utilizați în ordine sunt:

  • numele tabelului pentru introducerea datelor în
  • datele de inserat (coloană => perechi de valori) fără a scăpa
  • o serie de formate pentru a fi mapate la fiecare dintre valorile din $ date. Dacă nu este prezent, toate valorile vor fi tratate ca șiruri de caractere

Actualizarea datelor

 $ wpdb-> actualizare ('food', array ('fruct' => 'apple', // string 'year' => 'value2' // integer (number) array ('% s', // valoare1 '% d' // valoare2), array ('% d'));

Parametrii utilizați în ordine sunt:

  • nume de tabel
  • date
  • unde condițiile
  • format
  • where_format

Informații despre coloane

Puteți obține informații despre coloanele celui mai recent rezultat cu această funcție. Când o funcție a returnat o OBIECT și există proprietăți despre care nu știți prea multe, acest lucru poate fi util.

 $ wpdb-> get_col_info ('tip', offset);
  • Tip: informațiile pe care doriți să le preluați, câteva exemple sunt aici
    • Nume - numele coloanei (aceasta este valoarea implicită)
    • masa - numele tabelului din care face parte coloana
    • lungime maxima - lungimea maximă a coloanei
    • nu nul - 1 dacă coloana nu poate fi NULL
    • mai multe pot fi găsite în referința WordPress Codex WPDB
  • Offset: specificați coloana din care să preluați informațiile (0 este prima coloană)

Referindu-se la tabelele WordPress

Tabelele de baze de date WordPress pot fi menționate în wpdb clasă. Acest lucru este foarte convenabil deoarece numele tabelelor pot fi diferite de cele implicite. Iată o listă de referințe pentru tabelele bazei de date WordPress:

  • $ Wpdb-> posturi;
  • $ Wpdb-> postmeta;
  • $ Wpdb-> comentarii;
  • $ Wpdb-> commentmeta;
  • $ Wpdb-> termeni;
  • $ Wpdb-> term_taxonomy;
  • $ Wpdb-> term_relationships;
  • $ Wpdb-> utilizatori;
  • $ Wpdb-> usermeta;
  • $ Wpdb-> link-uri;
  • $ Wpdb-> opțiuni;

Rețineți că nu este necesar să includeți prefixul, acesta este beneficiul aici în cazul în care wpdb clasa are grija de asta pentru noi.

Acolo o avem! O referință pentru interogări personalizate în WordPress, toate într-un singur loc pentru dvs..

Cod