Tahák k tvorbě webů

WooCommerce

Plugin Order delivery date

České datum

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');

Datum doručení v administraci

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);

Datum doručení v e-mailu zákazníkovi

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');

Úprava Minimum Delivery time pro některé dny

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!