Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hawkidoki/aeb8eb1d81c64fd9212265c34a5701fb to your computer and use it in GitHub Desktop.
Save hawkidoki/aeb8eb1d81c64fd9212265c34a5701fb to your computer and use it in GitHub Desktop.
<?php
// Admin Filter Date Range: Enqueue
add_action('admin_enqueue_scripts', 'hwk_filter_date_range_enqueue');
function hwk_filter_date_range_enqueue(){
global $pagenow;
if($pagenow != 'edit.php' && $pagenow != 'upload.php')
return;
wp_enqueue_script('momentjs', '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js', array(), null);
wp_enqueue_script('jquery-ui-datepicker', array(), null);
wp_enqueue_script('jquery-ui-datepicker-filter', get_template_directory_uri() . '/assets/js/datepicker-filter.js', array('jquery'), null);
wp_enqueue_style('jquery-ui', '//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css', array(), null);
wp_enqueue_style('datepicker-styles', get_template_directory_uri() . '/assets/css/datepicker-styles.css', array(), null);
wp_enqueue_style('datepicker-fitler', get_template_directory_uri() . '/assets/css/datepicker-filter.css', array(), null);
}
// Admin Filter Date Range: Form
add_action('restrict_manage_posts', 'hwk_filter_date_range_form');
function hwk_filter_date_range_form(){
$filter_date_start = $filter_date_end = '';
if(isset($_GET['filter_date_start']) && ($date = strtotime($_GET['filter_date_start'])))
$filter_date_start = date('d/m/Y', $date);
if(isset($_GET['filter_date_end']) && ($date = strtotime($_GET['filter_date_end'])))
$filter_date_end = date('d/m/Y', $date);
?>
<div class="filter_date_range_wrapper <?php echo ($filter_date_start) ? 'active': ''; ?>">
<input type="text" placeholder="<?php _e('From'); ?>" class="filter_datepicker filter_datepicker_from" value="<?php echo $filter_date_start; ?>" />
<span></span>
</div>
<div class="filter_date_range_wrapper <?php echo ($filter_date_end) ? 'active': ''; ?>">
<input type="text" placeholder="<?php _e('To'); ?>" class="filter_datepicker filter_datepicker_to" value="<?php echo $filter_date_end; ?>" />
<span></span>
</div>
<input type="hidden" name="filter_date_start" id="filter_datepicker_from" value="<?php echo $filter_date_start; ?>" />
<input type="hidden" name="filter_date_end" id="filter_datepicker_to" value="<?php echo $filter_date_start; ?>" />
<?php
}
// Admin Filter Date Range: Query
add_action('pre_get_posts', 'hwk_filter_date_range_query');
function hwk_filter_date_range_query($query){
global $pagenow;
if(!is_admin() || !$query->is_main_query() || ($pagenow != 'edit.php' && $pagenow != 'upload.php') || (empty($_GET['filter_date_start']) && empty($_GET['filter_date_end'])))
return;
$date_query = array();
$date_query['inclusive'] = true;
if(isset($_GET['filter_date_start']) && !empty($_GET['filter_date_start']) && strtotime($_GET['filter_date_start']))
$date_query['after'] = $_GET['filter_date_start'];
if(isset($_GET['filter_date_end']) && !empty($_GET['filter_date_end']) && strtotime($_GET['filter_date_end']))
$date_query['before'] = $_GET['filter_date_end'];
$query->set('date_query', $date_query);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment