Fitrování objednávek ve Woocommerce dle časového období

Pokud provozujete Woocommerce eshop, jistě víte, že v administraci objednávek, máte možnost vypsat všechny za určitý měsíc. Dnes vám ukáži, jak upravit filtraci, pro vybrané časové období.

Věřím tomu, že při větším množství objednávek, je  procházení seznamu za měsíc velmi frustrující. Proto jsem upravil fitrování objednávek tak, aby jste si mohli vybrat datum od a do kterého chcete objednávky vypsat. Vzhledem k tomu, že by vše mělo být co nejvíce uživatelské přívětivé, použijeme datapicker, což je jQuery kalendář, pro výběr data. Výborné je, že WordPress již datapocker obsahuje, takže se nemusíme starat o vkládání jQuery scriptu od třetí strany.

Nejprve začneme kontrolou, zda se jedná administraci, ať zbytečně nenačítáme funkce i na frontendu.

 
if(is_admin()){
 
}

Mezi složené závorky budeme psát celý kód.

Připravíme si funkci, která nám z vybraných dat upraví query dotaz.

 
function musilda_filter( $where = '' ) {
global $wpdb;
if( isset( $_REQUEST['start_date'] ) && !empty( $_REQUEST['start_date'] ) ){
 
$start_date=$_REQUEST['start_date'];
$where .= " AND post_date >='$start_date' ";
 
}
 
if( isset( $_REQUEST['end_date'] ) && !empty( $_REQUEST['end_date'] ) ){
 
$end_date=$_REQUEST['end_date'];
$where .=" AND post_date <='$end_date' ";
 
}
 
return $where;
}
Čtěte  Jak přidat do akcí objednávky znovu odeslání emailu o nové objednávce pro admina?
$start_date=$_REQUEST['start_date']; $where .= " AND post_date >='$start_date' "; } if( isset( $_REQUEST['end_date'] ) &amp;&amp; !empty( $_REQUEST['end_date'] ) ){ $end_date=$_REQUEST['end_date']; $where .=" AND post_date <='$end_date' "; } return $where; }

Dalším krokem bude přidání where do query. K tomu použijeme pre_get_posts a post_where:

 
add_filter('pre_get_posts', 'wp_musilda_admin_filters');
 
function wp_musilda_admin_filters($query) {
 
global $pagenow;
 
if( $query->is_admin && ( 'edit.php' == $pagenow ) ) {
 
if(isset($_REQUEST['start_date'])||isset($_REQUEST['end_date'])){
 
add_filter( 'posts_where', 'musilda_filter' );
 
}
 
}
 
return $query;
 
}

 

Protože budeme chtít použít jQuery datepicker, musíme přidat script:

 
add_action( 'admin_enqueue_scripts', 'enqueue_admin_scripts' );
function enqueue_admin_scripts() {
global $post;
if ( !empty( $post->post_type )
&amp;&amp; $post->post_type == 'shop_order' ){
wp_enqueue_script( 'jquery-ui-datepicker' );
}
}

Kontrola toho, zda se jedná o shop_order je v tomto případě na místě, protože by jsme měli vkládat scripty, jen když je potřebujeme.

Čtěte  Objednávka - položky objednávky

Jako poslední zobrazíme pole pro výběr datumů a funkčnost máme hotovou

 
add_action('restrict_manage_posts', 'wp_musilda_filters_dropdowns',2);
function wp_musilda_filters_dropdowns() {
 
global $post;
if ( !empty( $post->post_type )
&& $post->post_type == 'shop_order' ){
global $wpdb;
 
if( isset( $_REQUEST['start_date'] )
&& isset( $_REQUEST['end_date'] ) ){
 
$start_date = $_REQUEST['start_date'];
$end_date = $_REQUEST['end_date'];
 
}else{
 
$start_date = '';
$end_date = '';
 
}
global $post;
 
?>;
<input type="text" name="start_date" class="datepick"
value="<?php echo $start_date;?>" placeholder="Start date" />
<input type="text" name="end_date" class="datepick"
value="<?php echo $end_date;?>" placeholder="End date" />
 
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('.datepick').datepicker({
dateFormat: 'yy-mm-dd'
});
});
</script>
<?php
return;
}
 
}

 

Filtrování před:

Objednávky ‹ Woo Canvas – WordPress

Filtrování po:

Objednávky ‹ Woo Canvas – WordPress (1)

 

Pokud budete chtít použít jiný datepicker, stačí změnit použitý script. V případě, že budete chtít stejnou filtraci i u ostatních druhů obsahu, stačí zrušit kontrolu post_type.

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

Přidejte komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Chcete mít přehled o dění ve světě WordPressu?

Přímo do vašeho emailu

Pravidelný přehled o novinkách, trendech a událostech, které se točí kolem WordPressu. Souhrn toho nejzajímavějšího od nás i ze zahraničí.