Fast page insert in wordpress

September 20, 2009 · Posted in wordpress 

You want to create a lot of pages in wordpress using a script to populate a blog with content you might have. To make sure your script will be compatible with future versions of wordpress you want to use wp_insert_post

The Problem

The more pages you add the slower your script will be. With about 700 pages my script took 12 seconds to add a new page.
After digging through the code I found out that wp_insert_code calls $wp_rewrite->flush_rules() every time a new post or page is inserted and that this is what takes the most time to finish.
Now it makes sense, the more pages you have the more rules ( permalinks ) you have and more time it will take to finish that function call.

The Solution

The call to $wp_rewrite->flush_rules() can be disabled by defining WP_IMPORTING. Now inserting a post takes just a second or less. But you still have to call $wp_rewrite->flush_rules() after you're done inserting all posts. This call will take quite a lot depending on the total number of posts/pages you have but it's a lot better to call it only once then a few hundreds or thousand times.

The way wordpress updates it's rules needs to change. Even if we can solve the bulk import problem by calling flush_rules at the end , we end up with a blog with thousands of pages where trying to publish a new post manually might take 30 or more seconds.

  • Twitter
  • Digg
  • Reddit
  • del.icio.us
  • Slashdot
  • StumbleUpon
  • DZone
  • NewsVine
  • Technorati
  • Simpy
  • email
  • Facebook
  • Google Bookmarks
  • Live
  • Sphinn
  • co.mments
  • SphereIt
  • Wikio
  • FSDaily
  • Mixx
  • RSS
  • Tumblr
  • Yahoo! Bookmarks

Comments

Leave a Reply