Support » Requests and Feedback » Increase speed by logical ajax tabs queries

  • Hey all.
    Many times people ask questions like ” How to increase wordpress speed”.

    But i think we can find answers on this questions…

    reduce images, php queries, compress css and java, and other tricks.

    But now.. on my side bar i have 3 hard queries like
    1. Top rated
    2. Most Commented
    3. Most Viewed
    All three queries look in whole posts etc…so they make my sidebar load a bit slow.

    So lets start another part of loading this queries, like making ajax tabs and flecking data from seperated php files where we will include those php queries code`s.

    but how to make separated php files and include those code.

    function for 1. Top rated is

    if(!function_exists('get_highest_rated_range')) {
    	function get_highest_rated_range($time = '1 day', $mode = '', $limit = 10, $chars = 0, $display = true) {
    		global $wpdb, $post;
    		$temp_post = $post;
    		$ratings_max = intval(get_option('postratings_max'));
    		$ratings_custom = intval(get_option('postratings_customrating'));
    		$min_time = strtotime('-'.$time, current_time('timestamp'));
    		$output = '';
    		if(!empty($mode) && $mode != 'both') {
    			$where = "$wpdb->posts.post_type = '$mode'";
    		} else {
    			$where = '1=1';
    		}
    		if($ratings_custom && $ratings_max == 2) {
    			$order_by = 'ratings_score';
    		} else {
    			$order_by = 'ratings_average';
    		}
    		$temp = stripslashes(get_option('postratings_template_highestrated'));
    		$highest_rated = $wpdb->get_results("SELECT COUNT($wpdb->ratings.rating_postid) AS ratings_users, SUM($wpdb->ratings.rating_rating) AS ratings_score, ROUND(((SUM($wpdb->ratings.rating_rating)/COUNT($wpdb->ratings.rating_postid))), 2) AS ratings_average, $wpdb->posts.* FROM $wpdb->posts LEFT JOIN $wpdb->ratings ON $wpdb->ratings.rating_postid = $wpdb->posts.ID WHERE rating_timestamp >= $min_time AND $wpdb->posts.post_password = '' AND $wpdb->posts.post_date < '".current_time('mysql')."'  AND $wpdb->posts.post_status = 'publish' AND $where GROUP BY $wpdb->ratings.rating_postid ORDER BY $order_by DESC, ratings_users DESC LIMIT $limit");
    		if($highest_rated) {
    			foreach($highest_rated as $post) {
    				$output .= expand_ratings_template($temp, $post->ID, $post, $chars)."\n";
    			}
    		} else {
    			$output = '<li>'.__('N/A', 'wp-postratings').'</li>'."\n";
    		}
    		$post = $temp_post;
    		if($display) {
    			echo $output;
    		} else {
    			return $output;
    		}
    	}
    }

    code for 2.most commented is

    <?php
    $results = $wpdb->get_results("SELECT ID, comment_count FROM wp_posts WHERE post_type = 'post' && post_status = 'publish' ORDER BY comment_count DESC LIMIT 10");
    foreach ($results as $r):
        query_posts(array('p' => $r->ID));
        while (have_posts()):
          the_post();
    ?>
    <ul>
    <li style="display:block; list-style:none"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> (<?php comments_number('0', '1', '%'); ?>)</li>
    </ul>
    <?php endwhile; endforeach; ?>

    Function for most viewed is

    if(!function_exists('get_most_viewed')) {
    	function get_most_viewed($mode = '', $limit = 10, $chars = 0, $display = true) {
    		global $wpdb;
    		$views_options = get_option('views_options');
    		$where = '';
    		$temp = '';
    		$output = '';
    		if(!empty($mode) && $mode != 'both') {
    			$where = "post_type = '$mode'";
    		} else {
    			$where = '1=1';
    		}
    		$most_viewed = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER  BY views DESC LIMIT $limit");
    		if($most_viewed) {
    			foreach ($most_viewed as $post) {
    				$post_views = intval($post->views);
    				$post_title = get_the_title($post);
    				if($chars > 0) {
    					$post_title = snippet_text($post_title, $chars);
    				}
    				$post_excerpt = views_post_excerpt($post->post_excerpt, $post->post_content, $post->post_password, $chars);
    				$temp = stripslashes($views_options['most_viewed_template']);
    				$temp = str_replace("%VIEW_COUNT%", number_format_i18n($post_views), $temp);
    				$temp = str_replace("%POST_TITLE%", $post_title, $temp);
    				$temp = str_replace("%POST_EXCERPT%", $post_excerpt, $temp);
    				$temp = str_replace("%POST_CONTENT%", $post->post_content, $temp);
    				$temp = str_replace("%POST_URL%", get_permalink($post), $temp);
    				$output .= $temp;
    			}
    		} else {
    			$output = '<li>'.__('N/A', 'wp-postviews').'</li>'."\n";
    		}
    		if($display) {
    			echo $output;
    		} else {
    			return $output;
    		}
    	}
    }

    p.s i know how to make ajax tabs for getting external data from another php file…

    any1 with some idea?

  • The topic ‘Increase speed by logical ajax tabs queries’ is closed to new replies.