Přeskočit na obsah

Pro vývojáře

Zobrazí nejnižší cenu produktu za posledních 30 dní.

Použití:

// V šabloně produktu
echo do_shortcode( '[wpify_woo_lowest_price]' );

Výstup: Formátovaná cena pomocí wc_price().

// Získání instance modulu
$prices_log = wpify_woo_container()->get(
\WpifyWoo\Modules\PricesLog\PricesLogModule::class
);
// Získání nejnižší ceny
$lowest_price = $prices_log->get_lowest_price( $product_id );

Modul ukládá historii cen do vlastní tabulky:

SloupecTypPopis
idINTPrimární klíč
product_idINTID produktu
regular_priceVARCHARBěžná cena (uložena jako text)
sale_priceVARCHARSlevová cena (uložena jako text)
created_atVARCHARDatum záznamu (formát Y-m-d H:i:s)
// Získání repository
$repository = wpify_woo_container()->get(
\WpifyWoo\Modules\PricesLog\PricesLogRepository::class
);
// Všechny záznamy produktu
$logs = $repository->find_by_product_id( $product_id );
// Poslední záznam
$last = $repository->get_last_by_product_id( $product_id );
// Nejnižší cena za 30 dní
$lowest = $repository->find_lowest_price( $product_id );

Modul Historie cen poskytuje data pro modul Ceny (typ ceny “Lowest price in 30 days”):

// V modulu Ceny se volá:
$module = wpify_woo_container()->get(
\WpifyWoo\Modules\PricesLog\PricesLogModule::class
);
$price['value'] = $module->get_lowest_price( get_the_ID() );

Příklad: Vlastní zobrazení nejnižší ceny

Section titled “Příklad: Vlastní zobrazení nejnižší ceny”
add_action( 'woocommerce_single_product_summary', function() {
global $product;
if ( ! $product->is_on_sale() ) {
return;
}
$prices_log = wpify_woo_container()->get(
\WpifyWoo\Modules\PricesLog\PricesLogModule::class
);
$lowest = $prices_log->get_lowest_price( $product->get_id() );
if ( $lowest && $lowest < $product->get_regular_price() ) {
printf(
'<div class="omnibus-price">%s: %s</div>',
esc_html__( 'Nejnižší cena za 30 dní', 'my-theme' ),
wc_price( $lowest )
);
}
}, 15 );
function export_price_history( $product_id ) {
$repository = wpify_woo_container()->get(
\WpifyWoo\Modules\PricesLog\PricesLogRepository::class
);
$logs = $repository->find_by_product_id( $product_id );
$data = [];
foreach ( $logs as $log ) {
$data[] = [
'date' => $log->created_at,
'regular_price' => $log->regular_price,
'sale_price' => $log->sale_price,
];
}
return $data;
}