public static function the_loop_shortcode($parameters = array(), $template) { self::init_loop(); // Store original parameters self::$original_parameters = $parameters; // Merge parameters with defaults $parameters = self::merge_with_defaults($parameters); // Store merged parameters self::$state['parameters'] = $parameters; // Check cache - if loaded, return result if (($result = self::check_cache($parameters)) !== false) { self::close_loop(); return $result; } // If there's already result based on parameters, return it $result = self::before_query($parameters, $template); // Catch empty string too if ($result !== null) { self::close_loop(); return $result; } // Set up query based on parameters $query = self::prepare_query($parameters); if (!empty($query)) { if (!empty($parameters['the_posts'])) { // Inside [loop exists] and [the-loop] $query_result = $parameters['the_posts']; } else { // Get query result $query_result = self::run_query($query); // [loop exists] if (is_array(self::$original_parameters) && in_array('exists', self::$original_parameters)) { // Posts can be filtered out by prepare_all_posts $check_posts = self::prepare_all_posts($query_result); $post_exists = false; foreach ($check_posts->posts as $check_post) { if (in_array($check_post->ID, self::$state['all_ids'])) { $post_exists = true; break; } } if (!$post_exists) { return; } self::$original_parameters['the_posts'] = $query_result; return do_ccs_shortcode($template); } } // Process posts $posts = self::prepare_posts($query_result); // Loop through each post and compile shortcode template $results = self::compile_templates($posts, $template); // Combine results and process to final output $result = self::process_results($results); } else { $result = self::handle_empty_query($template); } self::close_loop(); return $result; }
public static function the_loop_shortcode($parameters, $template) { self::init_loop(); // Store original parameters self::$original_parameters = $parameters; // Merge parameters with defaults $parameters = self::merge_with_defaults($parameters); // Store merged parameters self::$state['parameters'] = $parameters; // Check cache - if loaded, return result if (($result = self::check_cache($parameters)) !== false) { self::close_loop(); return $result; } // If there's already result based on parameters, return it $result = self::before_query($parameters, $template); if ($result !== null) { self::close_loop(); return $result; } // Set up query based on parameters $query = self::prepare_query($parameters); if (!empty($query)) { // Get posts from query $posts = self::run_query($query); // Process posts $posts = self::prepare_posts($posts); // Loop through each post and compile shortcode template $results = self::compile_templates($posts, $template); // Combine results and process to final output $result = self::process_results($results); } else { // Query is empty $results = self::compile_templates(null, $template, false); $result = self::process_results($results); } self::close_loop(); return $result; }