Пример #1
0
/**
 * Magazine template function to build queries for individual magazine sections.
 *
 * @param array $args
 * @return array
 */
function suffusion_get_mag_section_queries($args = array())
{
    global $post, $wpdb, $suf_mag_total_excerpts;
    $meta_check_field = $args['meta_check_field'];
    $solos = array();
    $queries = array();
    if ($meta_check_field) {
        // Previously the script was loading all posts into memory using get_posts and checking the meta field. This causes the code to crash if the # posts is high.
        $querystr = "SELECT wposts.*\n\t\t\tFROM {$wpdb->posts} wposts, {$wpdb->postmeta} wpostmeta\n\t\t\tWHERE wposts.ID = wpostmeta.post_id\n\t\t    AND wpostmeta.meta_key = '{$meta_check_field}'\n\t\t    AND wpostmeta.meta_value = 'on'\n\t\t    AND wposts.post_status = 'publish'\n\t\t    AND wposts.post_type = 'post'\n\t\t    ORDER BY wposts.post_date DESC\n\t\t ";
        $post_results = $wpdb->get_results($querystr, OBJECT);
        foreach ($post_results as $post) {
            setup_postdata($post);
            $solos[] = $post->ID;
        }
    }
    if (count($solos) > 0) {
        $solo_query = new WP_query(array('post__in' => $solos, 'ignore_sticky_posts' => 1));
        $queries[] = $solo_query;
    }
    $category_prefix = $args['category_prefix'];
    if ($category_prefix) {
        $categories = suffusion_get_allowed_categories($category_prefix);
        if (is_array($categories) && count($categories) > 0) {
            $query_cats = array();
            foreach ($categories as $category) {
                $query_cats[] = $category->cat_ID;
            }
            $query_posts = implode(",", array_values($query_cats));
            $cat_query = new WP_query(array('cat' => $query_posts, 'post__not_in' => $solos, 'posts_per_page' => (int) $suf_mag_total_excerpts));
            $queries[] = $cat_query;
        }
    }
    return $queries;
}
Пример #2
0
                     if (trim($suf_mag_excerpt_full_story_text)) {
                         echo "\t<div class='suf-mag-excerpt-footer'>\n";
                         echo "\t\t<a href='" . get_permalink($post->ID) . "' class='suf-mag-excerpt-full-story'>{$suf_mag_excerpt_full_story_text}</a>";
                         echo "\t</div>\n";
                     }
                     echo "\t</div>";
                     $ctr++;
                 }
                 wp_reset_postdata();
             }
         }
         echo "</section>\n";
     }
 } else {
     if ($suf_mag_categories_enabled == 'show' && $entity == 'categories') {
         $categories = suffusion_get_allowed_categories('suf_mag_catblock_categories');
         if ($categories != null && is_array($categories) && count($categories) > 0) {
             $total = count($categories);
             global $suf_mag_catblocks_per_row, $suf_mag_catblocks_title, $suf_mag_excerpt_full_story_position;
             echo "<section class='suf-mag-categories'>\n";
             if (trim($suf_mag_catblocks_title) != '') {
                 global $suf_mag_catblocks_main_title_alignment;
                 echo "\t\t<div class='suf-mag-categories-header {$suf_mag_catblocks_main_title_alignment}'>" . stripslashes($suf_mag_catblocks_title) . "</div>";
             }
             $ctr = 0;
             if (is_array($categories)) {
                 $num_results = count($categories);
                 $cols_per_row = $suf_mag_catblocks_per_row;
                 foreach ($categories as $category) {
                     if ($ctr % $suf_mag_catblocks_per_row == 0) {
                         if ($total - 1 - $ctr < $suf_mag_catblocks_per_row) {
Пример #3
0
function suffusion_display_featured_posts($echo = true)
{
    global $suf_featured_allow_sticky, $suf_featured_show_latest, $suf_featured_num_posts, $suf_featured_num_latest_posts, $suf_featured_excerpt_position, $suffusion_duplicate_posts, $suf_featured_show_dupes, $suf_featured_selected_posts, $suf_featured_selected_tags, $suf_featured_pager, $suf_featured_controller, $suf_featured_pager_style;
    global $suffusion_fc_feautred_excerpt_position, $suffusion_fc_featured_post_counter, $suffusion_fc_excerpt_position, $suffusion_fc_rotation, $suffusion_fc_alt_tb, $suffusion_fc_alt_lr;
    $ret = "";
    $stickies = get_option('sticky_posts');
    $featured_categories = suffusion_get_allowed_categories('suf_featured_selected_categories');
    $featured_pages = suffusion_get_allowed_pages('suf_featured_selected_pages');
    $count_so_far = 0;
    if (is_array($stickies) && count($stickies) > 0 && $suf_featured_allow_sticky == "show") {
        $sticky_query = new WP_query(array('post__in' => $stickies));
        $count_so_far += $sticky_query->post_count;
    }
    if ($suf_featured_show_latest == 'show' && $count_so_far < $suf_featured_num_posts) {
        if (!$suf_featured_num_latest_posts) {
            $number_of_latest_posts = 5;
        } else {
            $number_of_latest_posts = $suf_featured_num_latest_posts;
        }
        $latest_query = new WP_query(array('post__not_in' => $stickies, 'posts_per_page' => $number_of_latest_posts, 'order' => 'DESC', 'ignore_sticky_posts' => 1));
        $count_so_far += $latest_query->post_count;
    }
    if (is_array($featured_categories) && count($featured_categories) > 0 && $count_so_far < $suf_featured_num_posts) {
        $query_cats = array();
        foreach ($featured_categories as $featured_category) {
            $query_cats[] = $featured_category->cat_ID;
        }
        $cat_query = array('taxonomy' => 'category', 'field' => 'id', 'terms' => $query_cats);
    }
    if (isset($suf_featured_selected_tags) && trim($suf_featured_selected_tags) != '' && $count_so_far < $suf_featured_num_posts) {
        $featured_tags = explode(',', trim($suf_featured_selected_tags));
        $trim_featured_tags = array();
        foreach ($featured_tags as $tag) {
            $tag = str_replace('  ', ' ', $tag);
            $trim_featured_tags[] = str_replace(' ', '-', $tag);
        }
        $tag_query = array('taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => $trim_featured_tags);
    }
    if (isset($tag_query) || isset($cat_query)) {
        $cat_tag_query_args = array('post__not_in' => $stickies, 'posts_per_page' => $suf_featured_num_posts);
        if (isset($tag_query) && isset($cat_query)) {
            $cat_tag_query_args['tax_query'] = array('relation' => 'OR', $cat_query, $tag_query);
        } else {
            if (isset($cat_query)) {
                $cat_tag_query_args['tax_query'] = array($cat_query);
            } else {
                if (isset($tag_query)) {
                    $cat_tag_query_args['tax_query'] = array($tag_query);
                }
            }
        }
    }
    if (isset($cat_tag_query_args)) {
        $cat_tag_query_args = apply_filters('suffusion_cat_tag_query_args', $cat_tag_query_args);
        $cat_tag_query = new WP_Query($cat_tag_query_args);
        $count_so_far += $cat_tag_query->post_count;
    }
    if (is_array($featured_pages) && count($featured_pages) > 0 && $count_so_far < $suf_featured_num_posts) {
        $query_pages = array();
        foreach ($featured_pages as $featured_page) {
            $query_pages[count($query_pages)] = $featured_page->ID;
        }
        $page_query = new WP_query(array('post_type' => 'page', 'post__in' => $query_pages, 'posts_per_page' => $suf_featured_num_posts, 'ignore_sticky_posts' => 1, 'orderby' => 'menu_order', 'order' => 'ASC'));
        $count_so_far += $page_query->post_count;
    }
    if (isset($suf_featured_selected_posts) && trim($suf_featured_selected_posts) != '' && $count_so_far < $suf_featured_num_posts) {
        $trim_featured_posts = str_replace(' ', '', $suf_featured_selected_posts);
        $query_posts = explode(',', $trim_featured_posts);
        $post_query = new WP_query(array('post_type' => 'post', 'post__in' => $query_posts, 'posts_per_page' => $suf_featured_num_posts, 'ignore_sticky_posts' => 1));
        $count_so_far += $post_query->post_count;
    }
    $total_count = $count_so_far;
    if ($total_count > 0) {
        $suffusion_fc_alt_tb = array("top", "bottom");
        $suffusion_fc_alt_lr = array("left", "right");
        $suffusion_fc_rotation = array("top", "bottom", "left", "right");
        if (in_array($suf_featured_excerpt_position, $suffusion_fc_rotation)) {
            $suffusion_fc_excerpt_position = $suf_featured_excerpt_position;
        }
        $suffusion_fc_feautred_excerpt_position = 0;
        $suffusion_fc_featured_post_counter = 0;
        global $suf_featured_show_border;
        $border_class = $suf_featured_show_border == 'hide' ? 'no-border' : 'show-border';
        $index_class = $suf_featured_pager == 'show' || $suf_featured_controller == 'show' ? 'index-below' : ($suf_featured_pager == 'show-overlaid' || $suf_featured_controller == 'show-overlaid' ? 'index-overlaid' : 'index-hidden');
        $controller_class = $suf_featured_controller == 'show-overlaid-icons' ? 'controller-icons' : '';
        $pager_class = $suf_featured_pager_style == 'numbers' ? 'pager-numbers' : 'pager-bullets';
        $ret .= "<div id=\"featured-posts\" class=\"fix {$border_class} {$index_class} {$pager_class} {$controller_class}\">";
        $ret .= "\t<div id=\"slider\" class=\"fix clear\">";
        $ret .= "\t\t<ul id=\"sliderContent\" class=\"fix clear\">";
        $do_not_duplicate = array();
        if (isset($sticky_query)) {
            $ret .= suffusion_parse_featured_query_results($sticky_query, $do_not_duplicate);
        }
        if (isset($latest_query)) {
            $ret .= suffusion_parse_featured_query_results($latest_query, $do_not_duplicate);
        }
        if (isset($cat_tag_query)) {
            $ret .= suffusion_parse_featured_query_results($cat_tag_query, $do_not_duplicate);
        }
        if (isset($page_query)) {
            $ret .= suffusion_parse_featured_query_results($page_query, $do_not_duplicate);
        }
        if (isset($post_query)) {
            $ret .= suffusion_parse_featured_query_results($post_query, $do_not_duplicate);
        }
        $ret .= "\t\t</ul>";
        $ret .= "\t</div>";
        $ret .= suffusion_display_featured_pager($echo);
        $ret .= "</div>";
        if ($suf_featured_show_dupes == 'hide') {
            $suffusion_duplicate_posts = $do_not_duplicate;
        } else {
            $suffusion_duplicate_posts = array();
        }
    }
    if ($echo) {
        echo $ret;
    }
    return $ret;
}