コード例 #1
0
ファイル: actions.php プロジェクト: mnjit/aa-global
function dt_portfolio_layout_init($layout, $data = array())
{
    if ('dt-portfolio' != $layout || !isset($data['cat_id'])) {
        return false;
    }
    global $post, $DT_QUERY;
    $opts = get_post_meta($post->ID, '_dt_portfolio_layout_options', true);
    $cats = get_post_meta($post->ID, '_dt_portfolio_layout_category', true);
    $page_data = dt_storage('page_data');
    if ($page_data && is_array($page_data)) {
        $page_data['page_options'] = $opts;
        dt_storage('page_data', $page_data);
    } else {
        dt_storage('page_data', array('page_options' => $opts));
    }
    dt_storage_add_data_init(array('layout' => $opts['layout']));
    if (!($paged = get_query_var('page'))) {
        $paged = get_query_var('paged');
    }
    $args = array('post_type' => 'dt_portfolio', 'order' => $opts['order'], 'orderby' => $opts['orderby'], 'status' => 'publish', 'paged' => $paged);
    if ($opts['ppp']) {
        $args['posts_per_page'] = $opts['ppp'];
    }
    if (!isset($cats['portfolio_cats'])) {
        $cats['portfolio_cats'] = array();
    } else {
        $cats['portfolio_cats'] = array_map('intval', array_values($cats['portfolio_cats']));
    }
    if (is_array($data['cat_id'])) {
        $in_array = in_array(current($data['cat_id']), $cats['portfolio_cats']);
        $args['tax_query'] = array(array('taxonomy' => 'dt_portfolio_category', 'field' => 'id', 'operator' => 'IN'));
        if ('only' == $cats['select'] && $in_array || 'except' == $cats['select'] && !$in_array || 'all' == $cats['select']) {
            $args['tax_query'][0]['terms'] = intval(current($data['cat_id']));
        } else {
            $args['tax_query'][0]['terms'] = 0;
        }
    } elseif ('none' == $data['cat_id'] || !empty($cats['portfolio_cats']) && !('all' == $cats['select'])) {
        $terms = get_terms('dt_portfolio_category', array('type' => 'dt_portfolio', 'hide_empty' => 1, 'hierarchical' => 0, 'pad_counts' => false, 'fields' => 'ids'));
        $args['tax_query'] = array(array('taxonomy' => 'dt_portfolio_category', 'field' => 'id', 'terms' => $terms, 'operator' => 'IN'));
        if ('none' == $data['cat_id']) {
            $args['tax_query'][0]['operator'] = 'NOT IN';
        } elseif ('except' == $cats['select']) {
            $terms_arr = array_diff($terms, $cats['portfolio_cats']);
            sort($terms_arr);
            $args['tax_query']['relation'] = 'OR';
            $args['tax_query'][1] = $args['tax_query'][0];
            $args['tax_query'][0]['terms'] = $terms_arr;
            $args['tax_query'][1]['operator'] = 'NOT IN';
            if (empty($terms_arr)) {
                $args['tax_query'][0] = $args['tax_query'][1];
                unset($args['tax_query'][1], $args['tax_query']['relation']);
            }
        } elseif ('only' == $cats['select']) {
            $args['tax_query'][0]['terms'] = $cats['portfolio_cats'];
        }
    }
    add_filter('posts_clauses', 'dt_core_join_left_filter');
    $DT_QUERY = new WP_Query($args);
    remove_filter('posts_clauses', 'dt_core_join_left_filter');
    if ($DT_QUERY->have_posts()) {
        $thumb_arr = dt_core_get_posts_thumbnails($DT_QUERY->posts);
        dt_storage('thumbs_array', $thumb_arr['thumbs_meta']);
    }
    dt_storage('post_is_first', 1);
    dt_storage('num_pages', 'on' == $opts['show_all_pages'] ? 999 : null);
}
コード例 #2
0
ファイル: actions.php プロジェクト: mnjit/aa-global
function dt_photos_layout_init($layout, $data = array())
{
    if ('dt-photos' != $layout || !isset($data['cat_id'])) {
        return false;
    }
    global $post, $DT_QUERY, $wpdb;
    $opts = get_post_meta($post->ID, '_dt_photos_layout_options', true);
    $cats = get_post_meta($post->ID, '_dt_photos_layout_albums', true);
    $page_data = dt_storage('page_data');
    if ($page_data && is_array($page_data)) {
        $page_data['page_options'] = $opts;
        dt_storage('page_data', $page_data);
    } else {
        dt_storage('page_data', array('page_options' => $opts));
    }
    dt_storage_add_data_init(array('layout' => $opts['layout']));
    if (!($paged = get_query_var('page'))) {
        $paged = get_query_var('paged');
    }
    $args = array('post_type' => 'dt_gallery', 'post_status' => 'publish');
    $args['posts_per_page'] = -1;
    if (!isset($cats['albums_cats'])) {
        $cats['albums_cats'] = array();
    } else {
        $cats['albums_cats'] = array_map('intval', array_values($cats['albums_cats']));
    }
    if (is_array($data['cat_id'])) {
        $args['tax_query'] = array(array('taxonomy' => 'dt_gallery_category', 'field' => 'id', 'operator' => 'IN'));
        $args['tax_query'][0]['terms'] = intval(current($data['cat_id']));
        if ('category' == $cats['type'] && !empty($cats['albums_cats']) && 'all' != $cats['select']) {
            $in_array = in_array(current($data['cat_id']), $cats['albums_cats']);
            if ('only' == $cats['select'] && !$in_array || 'except' == $cats['select'] && $in_array) {
                $args['tax_query'][0]['terms'] = 0;
            }
        }
    } elseif ('none' == $data['cat_id']) {
        $terms = get_terms('dt_gallery_category', array('type' => 'dt_gallery', 'hide_empty' => 1, 'hierarchical' => 0, 'pad_counts' => false, 'fields' => 'ids'));
        $args['tax_query'] = array(array('taxonomy' => 'dt_gallery_category', 'field' => 'id', 'terms' => $terms, 'operator' => 'NOT IN'));
    } elseif ('category' == $cats['type'] && !empty($cats['albums_cats']) && 'all' != $cats['select']) {
        $args['tax_query'] = array(array('taxonomy' => 'dt_gallery_category', 'field' => 'id', 'terms' => $cats['albums_cats']));
        switch ($cats['select']) {
            case 'only':
                $args['tax_query'][0]['operator'] = 'IN';
                break;
            case 'except':
                $terms = get_terms('dt_gallery_category', array('type' => 'dt_gallery', 'hide_empty' => 1, 'hierarchical' => 0, 'pad_counts' => false, 'fields' => 'ids'));
                $args['tax_query'][0]['operator'] = 'IN';
                $terms_arr = array_diff($terms, $cats['albums_cats']);
                sort($terms_arr);
                $args['tax_query']['relation'] = 'OR';
                $args['tax_query'][1] = $args['tax_query'][0];
                $args['tax_query'][0]['terms'] = $terms_arr;
                $args['tax_query'][1]['operator'] = 'NOT IN';
                if (empty($terms_arr)) {
                    $args['tax_query'][0] = $args['tax_query'][1];
                    unset($args['tax_query'][1], $args['tax_query']['relation']);
                }
        }
    }
    if ('albums' == $cats['type'] && !empty($cats['albums']) && 'all' != $cats['select']) {
        switch ($cats['select']) {
            case 'only':
                $args['post__in'] = array_values($cats['albums']);
                break;
            case 'except':
                $args['post__not_in'] = array_values($cats['albums']);
        }
    }
    add_filter('posts_clauses', 'dt_core_join_left_filter');
    $DT_QUERY = new WP_Query($args);
    remove_filter('posts_clauses', 'dt_core_join_left_filter');
    if ($DT_QUERY->have_posts()) {
        foreach ($DT_QUERY->posts as $album) {
            if (post_password_required($album->ID)) {
                continue;
            }
            $output[] = $album->ID;
        }
    } else {
        return;
    }
    dt_storage('where_filter_param', implode(',', $output));
    $args = array('post_type' => 'attachment', 'order' => $opts['order'], 'orderby' => $opts['orderby'], 'post_mime_type' => 'image', 'post_status' => 'inherit', 'paged' => $paged);
    if ($opts['ppp']) {
        $args['posts_per_page'] = $opts['ppp'];
    }
    add_filter('posts_where', 'dt_core_parents_where_filter');
    $DT_QUERY->query($args);
    remove_filter('posts_where', 'dt_core_parents_where_filter');
    dt_storage('num_pages', 'on' == $opts['show_all_pages'] ? 999 : null);
}