WordPress: clasa wpdb


Uau… sunt convins că acest articol va avea 2-3 cititori (cu adevărat interesaţi). Chiar şi aşa, din respect şi apreciere pentru WordPress mai abordez din când în când şi aspecte mai tehnice de care vor fi interesaţi eventual autorii de pluginuri. Iar dacă cineva va fi mai motivat să scrie un plugin (pentru el sau pentru comunitate) atunci e chiar bine. Mai exact aş dori să mă opresc asupra modalităţii prin care putem să umblăm la datele din tabelele MySQL ale WordPress-ului. Drept urmare pornim de la premisa că aveţi minime cunoştinţe de MySQL (inclusiv structura tabelelor WP) şi PHP (chiar şi fără cunoştinţe prea mari se pot obţine diverse lucruri).

Bun. Să începem deci. Şi vom spune că WordPress pune la dispoziţie o clasă specială pentru operaţiile pe baza de date. E inspirată din ezSQL dar aceasta are mai puţină importanţă. Ce e foarte important este că, deşi nu e nimic ce să nu puteţi face singuri cu PHP, clasa wpdb uşurează mult lucrul. Dacă scrieţi un plugin trebuie doar să vă asiguraţi că în corpul funcţiei începeţi cu declaraţia global $wpdb; – şi astfel v-aţi asigurat accesul la tabelă. Fără partea de conectare, nume de utilizator şi parolă sau altele. Sunteţi gata să folosiţi deja baza de date.

Există câteva moduri de folosire, după tipul de interogare.

  • dacă doriţi pur şi simplu să executaţi o interogare (ex: de actualizare sau de şterge a unei înregistrări) folosiţi direct şi simplu $wpdb->query(‘query’);
  • dacă doriţi să obţineţi o variabilă (ex: numărul de categorii sau de articole) folosiţi $wpdb->get_var(‘query’,column_offset,row_offset);
  • dacă doriţi să obţineţi o înregistrare, adică o linie de tabel (ex: informaţiile despre un articol) folosiţi $wpdb->get_row(‘query’, output_type, row_offset);
  • dacă nu vă interesează o linie ci o coloană dintr-un tabel, similar folosiţi $wpdb->get_col(‘query’,column_offset);
  • în fine, cea mai generică apelare este $wpdb->get_results(‘query’, output_type);

Detalii găsiţi în Codex-ul WordPress, mai exact la codex.wordpress.org/wpdb_Class.

Haideţi să vedem câteva exemple concrete. Foarte concrete! Să zicem că doriţi în sidebar să afişaţi numărul de articole de pe situl Dvs. Ajunge să adăugaţi următoarele linii:

[PHP]get_var(„select count(id) from wp_posts where post_status=’publish'”);
echo „Sunt $cate articole in acest moment.”;
?>[/PHP]

Ce simplu, nu? Să zicem că vrem să afişăm numărul de articole scrise în acest an.

[PHP]get_var(„select count(id) from wp_posts where post_status=’publish’ and year(post_date)=2009”);
echo „In 2009 am publicat $cate articole.”;
?>[/PHP]

După cum aţi constatat, deja vorbim de MySQL. Dacă stăpâniţi MySQL şi aţi înţeles tabelele, veţi şti să interogaţi ce vă interesează şi să afişaţi apoi. Să ne imaginăm un alt exemplu. Dorim să afişăm ultimele 10 articole.

[PHP]get_results(„select * from wp_posts where post_status=’publish’ order by post_date desc limit 10”);
echo „