}
    $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();
Пример #2
0
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;
}