Přidává český formát data (den měsíc rok bez úvodních nul).
<?php
function gog_update_orddd_date_format() {
global $orddd_lite_date_formats;
$orddd_lite_date_formats['d. m. yy'] = 'j. n. Y';
}
add_action('after_setup_theme', 'gog_update_orddd_date_format');
Zobrazí datum doručení v administraci v detailu objednávky.
<?php
function gog_admin_order_delivery_date($order){
echo '<p><strong>Datum a čas doručení:</strong><br />' . get_post_meta($order->get_id(), 'Datum doručení', true) . '<br />' . get_post_meta($order->get_id(), 'Čas doručení', true) . '</p>';
}
add_action('woocommerce_admin_order_data_after_shipping_address', 'gog_admin_order_delivery_date', 10, 1);
V child šabloně vytvořím adresář woocommerce/emails a zkopíruji do něj soubor email-order-details.php. Na místo v detailu objednávky, kde chci, aby se mi zobrazilo datum a čas doručení, vložím tento kód:
<tr>
<th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Datum a čas doručení:</th>
<td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php echo get_post_meta($order->get_id(), 'Datum doručení', true); ?> <?php echo get_post_meta($order->get_id(), 'Čas doručení', true); ?></th>
</tr>
Ve functions.php zároveň odstraním defaultní zobrazování data a času doručení:
<?php
function gog_hide_orddd_date_from_order() {
if ( version_compare( get_option( 'woocommerce_version' ), '2.3', '>=' ) > 0 ) {
remove_filter( 'woocommerce_email_order_meta_fields', array( 'Orddd_Lite_Process', 'orddd_lite_add_delivery_date_to_order_woo_new' ), 11, 3 );
remove_filter( 'woocommerce_email_order_meta_fields', array( 'Orddd_Lite_Process', 'orddd_lite_add_time_slot_to_order_woo_new' ), 11, 3 );
} else {
remove_filter( 'woocommerce_email_order_meta_keys', array( 'Orddd_Lite_Process', 'orddd_lite_add_delivery_date_to_order_woo_deprecated' ), 11, 1 );
remove_filter( 'woocommerce_email_order_meta_keys', array( 'Orddd_Lite_Process', 'orddd_lite_add_time_slot_to_order_woo_deprecated' ), 11, 1 );
}
remove_filter( 'woocommerce_order_details_after_order_table', array( 'Orddd_Lite_Process', 'orddd_lite_add_delivery_date_to_order_page_woo' ) );
remove_filter( 'woocommerce_order_details_after_order_table', array( 'Orddd_Lite_Process', 'orddd_lite_add_time_slot_to_order_page_woo' ) );
}
add_action('after_setup_theme', 'gog_hide_orddd_date_from_order');
Běžný delivery time je 48 hodin, tj. zákazník musí objednat minimálně 48 hodin před plánovaným termínem doručení. V sobotu (nepracovní den) by si tak mohl objednat už na pondělí, což prodejce nestíhá. Proto se v sobotu minimum delivery time zvětšuje na 72 hodin, takže zákazník může objednat nejdříve na úterý.
<?php
function gog_modify_minimum_order_days() {
// is today saturday?
if (date('N') == 6) {
// get option specified in admin
$minimum_order_hours = get_option('orddd_lite_minimumOrderDays');
// create backup of this value
update_option('orddd_lite_minimumOrderDays_bck', $minimum_order_hours);
// on saturday, modify this value to 72 hours
update_option('orddd_lite_minimumOrderDays', 72);
}
}
add_action(ORDDD_LITE_SHOPPING_CART_HOOK, 'gog_modify_minimum_order_days', 1); // priority 1 is important!
/* And restore the value immediately */
function gog_restore_minimum_order_days() {
// is today saturday?
if (date('N') == 6) {
// restore backed up value
$minimum_order_hours_bck = get_option('orddd_lite_minimumOrderDays_bck');
update_option('orddd_lite_minimumOrderDays', $minimum_order_hours_bck);
}
}
add_action(ORDDD_LITE_SHOPPING_CART_HOOK, 'gog_restore_minimum_order_days', 1000); // priority 1000 is important!