În procesul de construire în jurul Easy Digital Downloads, s-ar putea să găsiți necesitatea de a interoga baza de date pentru datele produselor. Acest document va prezenta mai multe exemple despre cum să faceți acest lucru corect.
Obținerea unui singur produs
Cea mai bună modalitate de a obține informații despre un singur produs este de a utiliza clasa EDD_Download. Aceasta acceptă un
download_id și returnează un obiect cu informații despre descărcare. Exemplu:
$download = new EDD_Download( 109 );
Acest lucru ar returna un obiect de acest fel:
EDD_Download Object
(
[ID] => 109
[price:EDD_Download:private] =>
[prices:EDD_Download:private] =>
[files:EDD_Download:private] =>
[file_download_limit:EDD_Download:private] =>
[type:EDD_Download:private] =>
[bundled_downloads:EDD_Download:private] =>
[sales:EDD_Download:private] =>
[earnings:EDD_Download:private] =>
[notes:EDD_Download:private] =>
[sku:EDD_Download:private] =>
[button_behavior:EDD_Download:private] =>
[post_author] => 2
[post_date] => 2016-03-22 13:30:29
[post_date_gmt] => 2016-03-22 13:30:29
[post_content] => Buy my mp3!
[post_title] => My MP3
[post_excerpt] =>
[post_status] => publish
[comment_status] => closed
[ping_status] => closed
[post_password] =>
[post_name] => my-mp3
[to_ping] =>
[pinged] =>
[post_modified] => 2016-03-22 13:30:29
[post_modified_gmt] => 2016-03-22 13:30:29
[post_content_filtered] =>
[post_parent] => 0
[guid] => https://edd.dev/?post_type=download&p=109
[menu_order] => 0
[post_mime_type] =>
[comment_count] => 0
[filter] => raw
[post_type] => download
)
Odată ce aveți obiectul, există o mare varietate de metode care pot fi rulate pe acesta pentru a obține informații precum prețul, variațiile etc.
Documentație completă pentru EDD_Download aici.
Obținerea mai multor produse
Descărcările sunt un tip de conținut personalizat WordPress, deci este posibil să obțineți ID-urile mai multor descărcări utilizând
get_posts(). Dacă specificați corect parametrul fields, atunci get_posts va obține doar ID-urile, iar interogarea va fi mult mai rapidă. De asemenea, va trebui să specificați cel puțin download pentru post_type. Exemplu:
$args = array(
'fields' => 'ids',
'post_type' => 'download',
);
$downloads = get_posts( $args );
Puteți utiliza orice opțiune doriți în
get_posts() pentru a restrânge interogarea.
Documentație completă pentru get_posts() aici.
O opțiune suplimentară care nu se găsește în documentația pentru
get_posts() se numește no_found_rows(). Aceasta elimină unele date necesare pentru paginare, dar accelerează dramatic interogarea. Dacă aveți nevoie de paginare, nu utilizați această opțiune. Dacă nu aveți nevoie de paginare, ar arăta astfel:
$args = array(
'fields' => 'ids',
'post_type' => 'download',
'no_found_rows' => true,
);
$downloads = get_posts( $args );
Interogarea de mai sus va returna un tablou de download_ids de acest fel:
Array
(
[0] => 109
[1] => 82
[2] => 79
[3] => 61
[4] => 42
)
Lucrul cu mai multe produse
Odată ce aveți un tablou de download_ids, puteți pur și simplu să iterați peste tablou creând obiecte EDD_Download de acest fel:
foreach ( $downloads as $key => $download_id ) {
$download = new EDD_Download( $download_id );
// do whatever you wish with each object
}
