function lab_wc_get_paged_products()
{
    global $woocommerce_loop;
    $resp = array('content' => '');
    // Query Meta Vars
    $page = post('page');
    $opts = post('opts');
    $pp = post('pp');
    $q = isset($opts['q']) ? $opts['q'] : '';
    // Unserialize Query Details (if has)
    if ($q) {
        $q = unserialize(rot13decrypt($q));
    }
    $meta_query = WC()->query->get_meta_query();
    $atts = array('columns' => '4', 'orderby' => 'title', 'order' => 'asc', 'ids' => '', 'skus' => '');
    $query_args = array('post_type' => 'product', 'post_status' => 'publish', 'paged' => $page, 'posts_per_page' => $pp, 'ignore_sticky_posts' => 1, 'orderby' => $atts['orderby'], 'order' => $atts['order'], 'meta_query' => $meta_query);
    if ($q) {
        $query_args = array_merge($q, $query_args);
    }
    // Collect posts
    ob_start();
    // Init query
    $products = new WP_Query(apply_filters('woocommerce_shortcode_products_query', $query_args, $atts));
    if ($products->have_posts()) {
        while ($products->have_posts()) {
            $products->the_post();
            wc_get_template_part('content', 'product');
        }
    }
    wp_reset_postdata();
    $content = ob_get_clean();
    // Set up content
    $resp['content'] = $content;
    $resp['qq'] = $query_args;
    $resp['mq'] = $meta_query;
    echo json_encode($resp);
    die;
}
function laborator_get_paged_blog_posts()
{
    $resp = array('content' => '');
    // Query Meta Vars
    $page = post('page');
    $opts = post('opts');
    $pp = post('pp');
    $q = isset($opts['q']) ? $opts['q'] : '';
    // Unserialize Query Details (if has)
    if ($q) {
        $q = unserialize(rot13decrypt($q));
    }
    $query_args = array('posts_per_page' => $pp, 'paged' => $page, 'post_status' => 'publish');
    if ($q) {
        $query_args = array_merge($q, $query_args);
    }
    // Init query
    $query = new WP_Query($query_args);
    // Import blog options
    include_once THEMEDIR . 'tpls/blog-query.php';
    // Disable lazy loading for AJAX request
    if ($blog_template == 'blog-masonry') {
        //$blog_post_list_lazy_load = false;
    }
    // Custom Excerpt length for items
    if ($sidebar_position != 'hide') {
        add_filter('excerpt_length', 'laborator_short_excerpt_length');
    }
    switch ($blog_columns) {
        case '_3':
            add_filter('excerpt_length', 'laborator_short_excerpt_length');
            break;
        case '_4':
            add_filter('excerpt_length', 'laborator_supershort_excerpt_length');
            break;
    }
    // Collect posts
    ob_start();
    while ($query->have_posts()) {
        $query->the_post();
        switch ($opts['useFormat']) {
            case 2:
                get_template_part('tpls/post-format-2');
                break;
            default:
                get_template_part('tpls/post-format-1');
        }
    }
    $content = ob_get_clean();
    // Set up content
    $resp['content'] = $content;
    echo json_encode($resp);
    die;
}
function lab_rot13_tourl_decrypt($data)
{
    return unserialize(rot13decrypt($data));
}