WordPress Google Summer of Code student Frederick Ding has published an update on his progress working with the WXR Importer. In this update, Frederick will begin the process of updating the WordPress WXR Importer plugin.
I’ve also run the unit tests that apply to the importer plugin; however, the test cases are generally small (indeed, the biggest XML test case is 26 KB, titled small-export.xml) and don’t trigger the kinds of issues that importing dozens or hundreds of posts and attachments—with WXR files of megabytes in size—does.
So, the first task at hand is breaking up the process—which currently executes in one step with little indication of progress—into discrete chunks that can run in separate, stateful (stepwise) requests.
A chat with my mentors has pointed me in the direction of WP_Importer_Cron, which was first developed for other importers that need to make external API calls (e.g. Tumblr Importer) potentially subject to rate constraints. There are some parallels between “external API calls” and “remote attachment fetching”, which is why this can be a suitable approach for fixing the timeout issues that present with the current WordPress importer. After the process is discretized, showing progress (an enhancement long overdue) will be easier.
I’m stoked to see Frederick not only concentrating on the functionality of the importer but also paying attention to the visual details such as showing import progress. There are a lot of eyeballs keeping track of this plugin hoping that Frederick’s work will pay off in an importer that does what it’s supposed to with minimal problems. I want to remind Frederick that if you need people to beta test your work, especially in the area of large export/imports, just say so. I’m willing to be a guinea pig and I know a few others are as well.