Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- add_action( 'init', function() {
- remove_action( 'pre_get_posts', 'wpcoupon_pre_get_store_posts', PHP_INT_MAX );
- add_action( 'pre_get_posts', 'custom_wpcoupon_pre_get_store_posts', PHP_INT_MAX );
- } );
- function custom_wpcoupon_pre_get_store_posts( $query ) {
- if ( $query->is_tax( 'coupon_store' ) && $query->is_main_query() ) {
- $coupon_type = 'all';
- $available_coupon_type = wpcoupon_get_coupon_types();
- $get_coupon_var = ( isset( $_GET['coupon_type'] ) ) ? sanitize_text_field( wp_unslash( $_GET['coupon_type'] ) ) : '';
- $filtered_sortby = ( isset( $_GET['sort_by'] ) ) ? sanitize_text_field( wp_unslash( $_GET['sort_by'] ) ) : 'newest';
- $filtered_cat = ( isset( $_GET['coupon_cat'] ) ) ? sanitize_text_field( wp_unslash( $_GET['coupon_cat'] ) ) : '';
- $filtered_cat = array_filter( explode( ',', $filtered_cat ) );
- if ( isset( $get_coupon_var ) && array_key_exists( $get_coupon_var, $available_coupon_type ) ) {
- $coupon_type = $get_coupon_var;
- }
- $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
- $number_active = intval( wpcoupon_get_option( 'store_number_active', 15 ) );
- $query->set( 'posts_per_page', $number_active );
- $query->set( 'paged', $paged );
- $now = current_time( 'timestamp' );
- $meta_query = array();
- if ( 'all' != $coupon_type ) {
- $meta_query = array(
- 'relation' => 'AND',
- array(
- 'key' => '_wpc_coupon_type',
- 'value' => $coupon_type,
- 'compare' => '=',
- ),
- );
- }
- if ( is_array( $filtered_cat ) && ! empty( $filtered_cat ) ) { // phpcs:ignore
- $query->set(
- 'tax_query',
- array(
- 'relation' => 'AND',
- array(
- 'taxonomy' => 'coupon_category',
- 'field' => 'slug',
- 'terms' => $filtered_cat,
- 'operator' => 'IN',
- ),
- )
- );
- }
- switch ( $filtered_sortby ) {
- case 'popularity':
- $query->set( 'meta_key', '_wpc_used' );
- $query->set( 'orderby', 'meta_value_num' );
- $query->set( 'order', 'desc' );
- $query->set( 'meta_type', 'NUMERIC' );
- break;
- case 'ending-soon':
- $query->set( 'meta_key', '_wpc_expires' );
- $query->set( 'meta_value', $now );
- $query->set( 'meta_compare', '>=' );
- $query->set( 'meta_type', 'NUMERIC' );
- $query->set( 'orderby', 'meta_value_num' );
- $query->set( 'order', 'asc' );
- break;
- case 'expired':
- $meta_query[] = array(
- array(
- 'key' => '_wpc_expires',
- 'compare' => 'EXISTS',
- ),
- array(
- 'key' => '_wpc_expires',
- 'type' => 'NUMERIC',
- 'value' => 0,
- 'compare' => '>',
- ),
- array(
- 'key' => '_wpc_expires',
- 'value' => $now,
- 'type' => 'NUMERIC',
- 'compare' => '<=',
- ),
- );
- $query->set( 'meta_key', '_wpc_expires' );
- $query->set( 'orderby', 'meta_value' );
- $query->set( 'meta_type', 'NUMERIC' );
- $query->set( 'order', 'desc' );
- break;
- default:
- $query->set( 'orderby', 'menu_order date' );
- $query->set( 'order', 'desc' );
- break;
- }
- if ( ! empty( $meta_query ) ) {
- $query->set( 'meta_query', $meta_query );
- }
- }
- return $query;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement