Freelance of Dev biznet
6/24/2019 - 12:57 PM

Replace WooCommerce date selector

Permet de remplacer le sélecteur de date sur la liste des commandes WooCommerce par un sélecteur année et mois séparé.

<?php
add_action( 'restrict_manage_posts', 'wpse45436_admin_posts_filter_restrict_manage_posts' );
function wpse45436_admin_posts_filter_restrict_manage_posts() {
	global $typenow;
	
	if ( $typenow == 'shop_order' ) {
		$mois = isset($_GET['mois'])? $_GET['mois']:'';
		$annee = isset($_GET['annee'])? $_GET['annee']:'';
		?>
		
		<select name="mois">
			<option value="">Mois</option>
			<option value="01" <?= '01' == $mois ? ' selected="selected"' : '' ?>>Janvier</option>
			<option value="02" <?= '02' == $mois ? ' selected="selected"' : '' ?>>Février</option>
			<option value="03" <?= '03' == $mois ? ' selected="selected"' : '' ?>>Mars</option>
			<option value="04" <?= '04' == $mois ? ' selected="selected"' : '' ?>>Avril</option>
			<option value="05" <?= '05' == $mois ? ' selected="selected"' : '' ?>>Mai</option>
			<option value="06" <?= '06' == $mois ? ' selected="selected"' : '' ?>>Juin</option>
			<option value="07" <?= '07' == $mois ? ' selected="selected"' : '' ?>>Juillet</option>
			<option value="08" <?= '08' == $mois ? ' selected="selected"' : '' ?>>Août</option>
			<option value="09" <?= '09' == $mois ? ' selected="selected"' : '' ?>>Septembre</option>
			<option value="10" <?= '10' == $mois ? ' selected="selected"' : '' ?>>Octobre</option>
			<option value="11" <?= '11' == $mois ? ' selected="selected"' : '' ?>>Novembre</option>
			<option value="12" <?= '12' == $mois ? ' selected="selected"' : '' ?>>Décembre</option>
		</select>
		
		<select name="annee">
			<option value="">Année</option>
			
			<?php				
				for($i = 2016; $i <= date('Y'); $i++) { // Remplacer 2016 par l'année de la première commande du WooCommerce
					echo '<option value="'.$i.'" ';
					echo $i == $annee ? ' selected="selected"' : '';
					echo '>'.$i.'</option>';
				}
			?>
		</select>
		
		<style type="text/css">
			#filter-by-date { display: none; }
		</style>
		
		<script type="text/javascript">
			var $ = jQuery;
			
			$('#posts-filter').submit(function(e) {
				var month = $('select[name="mois"]').val();
				var year = $('select[name="annee"]').val();
				var nVal = year + month;
				
				$('#filter-by-date').after('<input type="hidden" value="'+nVal+'" name="m"/>');
				$('#filter-by-date').remove();
			});
		</script>
		
		<?php
	}
}
?>