![]() |
wordpress - php question
hi, one of my blogs is running too slow because of the amount of posts (over 5000)
the index.php file of wp has the following code: ######### <?php if(have_posts()) { ?> <?php while (have_posts()) : the_post(); ?> ######### The have_posts() function is defined as follows: ############ ./wp-includes/query.php: function have_posts() { if ( $this->current_post + 1 < $this->post_count ) { return true; } elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) { do_action_ref_array('loop_end', array(&$this)); // Do some cleaning up after the loop $this->rewind_posts(); } $this->in_the_loop = false; return false; } ##################### Wordpress is returning EVERY single post (5000) in the database and then iterating over them performing a SQL query for each. It does not help changing the theme because that routine is in wp itself not in the theme. Anybody help ? thanks |
Your best bet is to limit the mysql_query, save beating the server. There are several ways to do this, check out http://www.phpsimplicity.com/tips.php?id=1 for some great howto's
Thanks, Anthony |
Quote:
I don't really know much about Wordpress or what the_post() is doing, but if worst comes to worst, you could always add a function to query.php that sets current_post to a few hundred less than the number of posts. function jump_post($index) { $this->current_post=$index; } |
Try to re-code the loop with WP_Query() , but limiting the results posted.
THat should fix the slowness you describe... |
I'm 99% certain it's only looping over the number of posts defined to show on the home page.
From the codex: $post_count The number of posts being displayed. Not the total number of posts in your DB. |
All times are GMT -7. The time now is 05:45 PM. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
©2000-, AI Media Network Inc