/** * 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; }
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) {
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; }