} $filter_type = get_post_meta(get_the_ID(), '_est_filter_type', true); if ($filter_type == 'paginate') { $posts_per_page = get_post_meta(get_the_ID(), '_est_posts_per_page', true); $posts_per_page = empty($posts_per_page) ? get_option('posts_per_page') : $posts_per_page; $args['posts_per_page'] = $posts_per_page; } ?> <div id='fiterArgs' style='display:none'><?php echo json_encode($args); ?> </div> <div id='filter' data-page-id='<?php echo get_the_ID(); ?> '> <?php get_filter_content($args); ?> </div> </div> </div> </div> <?php } get_footer();
function est_get_filter_content() { global $options, $details, $search; $args = json_decode(stripslashes($_POST['args']), true); $options = json_decode(stripslashes($_POST['options']), true); $details = json_decode(stripslashes($_POST['details']), true); $search = json_decode(stripslashes($_POST['search']), true); $form = json_decode(stripslashes($_POST['form']), true); if (!empty($form)) { $params = array(); foreach ($form as $param) { $param['name'] = str_replace('[]', '', $param['name']); if (isset($params[$param['name']])) { $params[$param['name']]['values'][] = $param['value']; } else { $params[$param['name']]['values'] = array($param['value']); } if (substr_count($param['name'], '[min]')) { $name = str_replace('[min]', '', $param['name']); $params[$name]['min'] = $param['value']; unset($params[$param['name']]); } if (substr_count($param['name'], '[max]')) { $name = str_replace('[max]', '', $param['name']); $params[$name]['max'] = $param['value']; unset($params[$param['name']]); } if ($params[$param['name']] === '' or $params[$param['name']]['values'][0] == '') { unset($params[$param['name']]); } } $taxonomies = get_taxonomies(); foreach ($params as $key => $details) { if (in_array($key, $taxonomies)) { $params['custom_taxonomies'][$key] = $details; unset($params[$key]); } else { $params['customdatas'][$key] = $details; unset($params[$key]); } } if (!empty($params['customdatas'])) { foreach ($params['customdatas'] as $key => $details) { $params['customdatas'][$key]['filter_type'] = $search['customdatas'][$key]['filter_type']; } } if (!empty($params['custom_taxonomies'])) { foreach ($params['custom_taxonomies'] as $key => $details) { $params['custom_taxonomies'][$key]['filter_type'] = $search['custom_taxonomies'][$key]['filter_type']; } } if (!empty($params['custom_taxonomies'])) { foreach ($params['custom_taxonomies'] as $key => $details) { $operator = $details['filter_type'] == 'and' ? 'AND' : 'IN'; $new_args['tax_query'][] = array('taxonomy' => $key, 'field' => 'id', 'terms' => $details['values'], 'operator' => $operator); } } if (!empty($params['customdatas'])) { foreach ($params['customdatas'] as $key => $details) { if (!empty($details['min'])) { $new_args['meta_query'][] = array('key' => $key, 'value' => array($details['min'], $details['max']), 'compare' => 'BETWEEN'); } else { $new_args['meta_query'][] = array('key' => $key, 'value' => $details['values'], 'compare' => 'IN'); } } } } $args = wp_parse_args($new_args, $args); $args['paged'] = $_POST['page']; echo get_filter_content($args); die; }