Date in WooCommerce checkout page
Magyar verzió
This plugin allows the customer to select a date on the WooCommerce checkout page. This date is associated with the order and can also be displayed in the order list and/or in the order parameters.
Main functions
- Parameterize optional dates
There are several parameters in the plugin settings to help you set the duration you can choose from. - Disabled days
You can specify days that cannot be selected in any way. (e.g. holidays) - Optional display location
You can choose where the date field appears within the WooCommerce checkout page - Shipping Mode Assignment
You can specify for which delivery methods the date selection is displayed.
(If you create a new shipping method in WooCommerce, it will not appear by default.) - Custom appearance option
The plugin offers several options to customize the look. (You need a little more WordPress to use these.)
You can find the settings of the plugin on the „Integration” tab of the WooCommerce / Settings page, on the „Request date at checkout” page!
Filters and hooks
You can find the program codes in the /libs/hooks.php
file.
- Display the days in the header of the date picker
add_filter( 'request_a_date_render_days_in_week', 'request_a_date_403_render_days_in_week', 10, 1 );
- Show empty day in calendar (placeholder)
add_filter( 'request_a_date_render_empty_day', 'request_a_date_403_render_empty_day', 10, 1);
- Show a day on the calendar
add_filter( 'request_a_date_render_day', 'request_a_date_403_render_day', 10, 3);
- Display a button next to the date selection field
add_filter( 'request_a_date_render_button', 'request_a_date_403_render_button', 10, 1);
- Displays the date picker for tabular display
add_filter('request_a_date_render_in_table', 'request_a_date_403_render_in_table', 10, 3);
- Show date picker not for spreadsheets
add_filter('request_a_date_render_in_div', 'request_a_date_403_render_in_div', 10, 3);
- Display the selected date on the „thakyou” page
add_filter('request_a_date_render_in_thankyou', 'request_a_date_403_render_in_thankyou', 10, 2);
- Display date in email
add_filter('request_a_date_render_in_email', 'request_a_date_403_render_in_email', 10, 2);
- Change the first possible day
(This filter is not declared, but if you define it, it will be used.)function request_a_date_my_modify_first($date) { $date = date_i18n('Y-m-d', strtotime('+1 day', strtotime($date))); return $date; } add_filter('request_a_date_modify_first', 'request_a_date_my_modify_first', 10, 1);
- Change last possible day
(This filter is not declared, but if you define it, it will be used.)function request_a_date_my_modify_last($date) { $date = date_i18n('Y-m-d', strtotime('+1 day', strtotime($date))); return $date; } add_filter('request_a_date_modify_last', 'request_a_date_my_modify_last', 10, 1);
- Increase earliest day
(This filter is not declared, but if you define it, it will be used.)function my_add_custom_days($days_count) { // In the $days_count variable, you get the number of days // that the earliest selectable date must be due to the reorder. return $days_count; } add_filter('request_a_date_add_custom_days', 'my_add_custom_days', 10, 1);
Customize button
Experience has shown that, due to the variety of topics, it is usually necessary to change the appearance of the button. By default, this is given the class="button"
class, which is appropriate in most cases, but in many cases something else is needed.
In the example below, we modify this according to Bootstrap and add the class="btn btn-secondary"
class to the button.
// Delete original filter remove_filter( 'request_a_date_render_button', 'request_a_date_403_render_button'); function request_a_date_my_render_button($script) { // Here we use our own class: $html = '<button type="button" '.$script.' class="btn btn-secondary">'. '<span class="dashicons dashicons-calendar-alt"></span>'. '</button>'; return $html; } // Use new filter add_filter( 'request_a_date_render_button', 'request_a_date_my_render_button', 20, 1);
Support Facebook group.
Download: WordPress Plugin library.
Frequently asked Questions
-
I would like the earliest date to be later for some product categories. Is it possible?
Yes, it is possible. To do this, you need to editfunctions.php
in your (child) theme and place the following code in it:function my_add_custom_days($days_count) { // In the $days_count variable, you get the number of days // that the earliest selectable date must be due to the reorder. // These products are in the cart $items = WC()->cart->get_cart(); $add = 0; foreach ($items as $item) { $terms = get_the_terms( $item['product_id'], 'product_cat' ); foreach ($terms as $term) { // Check the category slug switch ($term->slug){ // Here you can examine all categories of slugs case 'other': // You set it if not bigger. This is how you will get the highest value. if ($add < 4) { // You claim as much as you want. $add = 4; } break; default : } } } if ($add != 0) { // If you want to increase it anyway // return $days_count + $add; // OR // If you want the later of the two dates if ($add > $days_count) { return $add; } else { return $days_count; } } else { return $days_count; } } add_filter('request_a_date_add_custom_days', 'my_add_custom_days', 10, 1);