Bij het bouwen rond Easy Digital Downloads kunt u de behoefte voelen om de database te bevragen voor productgegevens. Dit document toont verschillende voorbeelden van hoe u dat correct kunt doen.
Een Enkel Product Ophalen
De beste manier om informatie over een enkel product te verkrijgen, is door de EDD_Download klasse te gebruiken. Deze accepteert een
download_id en retourneert een object met informatie over de download. Voorbeeld:
$download = new EDD_Download( 109 );
Dit zou een object als volgt retourneren:
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
)
Zodra u het object heeft, zijn er een breed scala aan methoden die erop kunnen worden uitgevoerd om informatie zoals prijs, variaties, enz. te verkrijgen.
Volledige documentatie voor EDD_Download hier.
Meerdere Producten Ophalen
Downloads zijn een WordPress custom content type, dus het is mogelijk om de id's van meerdere downloads op te halen met
get_posts(). Als u de fields parameter correct specificeert, zal get_posts alleen de id's ophalen en zal de query veel sneller zijn. U moet ook ten minste download specificeren voor het post_type. Voorbeeld:
$args = array(
'fields' => 'ids',
'post_type' => 'download',
);
$downloads = get_posts( $args );
U kunt elke gewenste optie gebruiken in
get_posts() om uw query te verfijnen.
Volledige documentatie voor get_posts() hier.
Een extra optie die niet te vinden is in de documentatie voor
get_posts() heet no_found_rows(). Dit verwijdert enkele gegevens die nodig zijn voor paginering, maar versnelt uw query dramatisch. Als u paginering nodig heeft, gebruik deze optie dan niet. Als u geen paginering nodig heeft, zou het er als volgt uitzien:
$args = array(
'fields' => 'ids',
'post_type' => 'download',
'no_found_rows' => true,
);
$downloads = get_posts( $args );
De bovenstaande query retourneert een array van download_id's als volgt:
Array
(
[0] => 109
[1] => 82
[2] => 79
[3] => 61
[4] => 42
)
Werken Met Meerdere Producten
Zodra u een array van download_id's heeft, kunt u eenvoudig de array doorlopen en EDD_Download objecten maken als volgt:
foreach ( $downloads as $key => $download_id ) {
$download = new EDD_Download( $download_id );
// do whatever you wish with each object
}
