WordPress Plugin: Mass Page Maker

As of February 24, 2013, there is a new version of this plugin that I will be updating. Called Mass Page Maker Pro, it has new features like a customizable CSV format and improved web UI, but costs money.

This older, free version will continue to be available. If you’ve gotten any value from the plugin before, please consider purchasing the full version to get all future updates.

UPDATE — March 19, 2013
After a conversation with the WordPress plugin repository staff, it looks like the updated free version of this plugin will not be listed in the directory, making this the only place to download it. I will continue to provide the last free full featured version for download, but cannot support it.

Ever had the need to create multiple pages or posts and dreaded the idea of doing it manually?

Mass Page Maker is an admin panel that gives you the ability to create as many pages or posts as you like in a matter of seconds. It can create posts and pages that are customized with every aspect of a regular WordPress page.

It is a more human-readable way for users to insert new posts, compared to the native WordPress XML importer.

If you need to import data to WordPress and it seems like this plugin can almost do the job, send me an email with what how you’d like the plugin to be different. I can work with you to develop a customized version, but I must change for the service: $25/hour with a minimum charge of $50.

Tested most recently with WordPress 3.3.1. Please send feedback via the contact page or post a comment.

Table of Contents


Mass Page Maker is compatible with WordPress’ locale system. If you are interested in translating for your locale, please comment below or email w [at] wesg [dot] ca. If you’re particularly ambitious, translate the .PO file in the plugin download and send back to that address.
Current Translations

Thanks for helping to translate!

Download v2.7 of Mass Page Maker


  • Fill out the fields in the admin panel according to what your needs are. If you include [+], the plugin automatically inserts the incremented data.
  • As of version 2.7, the web interface inserts posts with the same data. If you want unique pages, please use a CSV file.
  • Entering a post date in the future will result in the post being published at that time.
  • Use a CSV (comma separated value) file to insert a large number of customized pages.
  • The plugin can handle nearly all the regular WordPress options.

If the name of your post is New Page [+] and you want 5 pages written, the resulting pages will be

New Page 1
New Page 2
New Page 3
New Page 4
New Page 5

Custom fields example:
To add two new fields to your new posts, use semicolons.

phone; address --> 123 456 7890; 123 fake st

This results in each new post having both of those fields associated with it.

Using CSV files

The plugin supports importing CSV files to add multiple posts very quickly. While being more powerful when entering pages, it is also more complicated. You must follow a specific format when building files.

Please view the sample file before adding your own. Be advised that while the sample file will work, it contains mostly irrelevant data to a blog.

The CSV file must have exactly 15 columns. Any columns that aren’t used must be included, but kept blank (ie. “”).

When using Excel to create CSV files, be sure to check the use of quotation marks before uploading the file to the plugin. Excel has a tendency to get confused when fields of text use quotation marks inside.

Format to follow
Each line in a CSV file follows a pattern separated by commas that turns the file into a makeshift database. The MPM CSV follows this pattern:

  • Page title
    Regular post title value
  • Page publishing date (in the timezone of your WordPress installation)
    Must follow the format YYYY-MM-DD HH:MM:SS. The seconds are optional. The plugin will verify the format before inserting the file.
  • Post content (commas and quotation marks must be escaped using the \\ character)
    Escape the quotations and apostrophes with the backslash character.
  • Post excerpt (same restrictions as content)
  • Post category
    The category title.
  • Post parent
    The page ID of the parent post (only valid on pages). Default should be 0.
  • Page template
    The PHP file in your template directory you want to use (ie. contact.php). “Default” is the default template.
  • Post status
    One of the following list: publish, draft, private.
  • Post type
    Either post or page.
  • Comment status
    Open or closed.
  • Ping status
    Open or closed.
  • Custom key
    Post meta field (doesn’t have to previously exist). Separate different fields with semicolons — be sure to surround the field in quotations (ie. “field 1; field 2”) Can be empty.
  • Custom key value
    Corresponding post meta value. Separate different values with semicolons (ie. “value 1; value 2”) Can be empty.
  • Tags
    Enter tags separated by commas Can be empty.
  • Post password
    The post password Can be empty.

Escaping characters
To clarify some of the questions coming in, here is an overview of how to escape characters when using CSV. Inside the sample file, you’ll note that fields are either surrounded by quotation marks or not. When fields are surrounded by quotation marks, any extra quotation marks inside the text must be escaped (ex.1) and when there are no quotation marks, all commas need to be escaped (ex.2). The latest version of the plugin appears to import Excel .CSV files correctly, so that is a good way to format everything correctly. Be sure that lines are deleted, and not only blank (otherwise they include useless lines).

, “Sample field with \” inside the text”, , Sample field\, with comma escaped,
, “Sample field with improper ” inside the text”, , Sample field, with comma improperly escaped,

Caution: This plugin is extremely powerful. A slip of the mouse can cause your blog to insert many more pages than you intended, which can take a lot of time to delete. Read the options carefully before inserting pages.


  1. Copy the folder mass-page-maker to your WordPress plugin folder (usually wp-content/plugins).
  2. Open the WordPress Admin Panel and activate the plugin.
  3. Navigate to your Option panel, where you will see the plugin’s interface.


What is the purpose of this plugin?
Mass Page Maker automates the task of making pages or posts that are similar to each other. This can be a very time consuming process that can now be done in a matter of seconds.

What options are available?
In the interface panel, you have the ability to customize the page insertion.
You can change:

  • Number of pages
  • Starting number of page
  • Post/Page title
  • Post/Page content
  • Post/Page status (published or draft)
  • Post/Page type
  • Post/Page category
  • Page parents
  • Page excerpts
  • Specific page dates
  • Time interval between pages
  • Page template
  • Page visibility/password

How many pages can I enter at once?
This will depend on the hardware of your server and your patience. Using a modest development server, I have been able to insert 2500+ pages in around 1 minute.


Click for a larger view.


v2.7 — March 10, 2012
* Major overhaul for WP 3.3.1
* Uses WordPress native functions
* Provides immediate progress feedback during CSV import

v2.6.7 — July 19, 2010
* Rewritten for WP 3.0
* Improved the reliability of the CSV and web interface
* Fixed tags in CSVs

v2.6.6 — December 17, 2009
* Added support for page orders
* Improved handling of escaped characters in CSV and web interface
* Various other bug fixes

v2.6.4 — August 20, 2009
* Repaired category support

v2.6.3 — August 10, 2009
* Cleaned page insertion problem
* Repaired template issues

v2.6.2 — August 9, 2009
* Fixed quotation handling

v2.6.1 — August 9, 2009
* Improved quotation handling
* Added page visibility options

v2.6 — July 23, 2009
* Fixed WP 2.8.x compatibility

v2.5.9 — July 22, 2009
* Added troubleshooting information

v2.5.8 — June 28, 2009
* Improved support for WP 2.8
* Added tag support
* Better compatibility with CSV files

v2.5.7 — May 17, 2009
* Added better compatibility and feedback with CSV files

v2.5.6 — April 30, 2009
* Added placeholder support
* Added better troubleshooting feedback for CSV files

v.2.5.5 — April 6, 2009
* fixed increment tag in page content and excerpt

v2.5.4 — March 21, 2009
* Made custom field work in each way
* Add German translation

v2.5.3 — March 18, 2009
* Added custom field support

v2.5.2 — March 15, 2009
* Finally fixed future posting cron errors

v2.5.1 — March 14, 2009
* Corrected some type wrong in v2.5

v2.5 — March 14, 2009
* Corrected cron behaviour with future posts
* Added page template option
* Add CSV file imports

v2.1 — February 8, 2009
* fixed what should have worked in 2.0

v2.0 — February 6, 2009
* Overhauled date and time system
* Added page excerpt data
* Added ability to insert posts in the future or the past

v1.5 — January 18, 2009
* Added ability to create pages with different content

v1.5 — January 18, 2009
* Added ability to create pages with different content

v1.4 — January 6, 2009
* Updated for WordPress 2.7
* Completed localization capability

v1.3 — November 1, 2008
* Enabled page parents
* Made the plugin compatible with WordPress internationalization

v1.2 — September 2, 2008
* Enabled adding categories to posts
* Optimized code

v1.1.1 — July 28, 2008
* Cleaned up code and readme file

v1.1 — June 19, 2008
* Added support for multiple page titles
* Built fault tolerance in
* Added new ways to enter pages faster
* Posts and pages can how have comments and pings that are open or closed

v1.0 –– June 18, 2008
* Initial release

View all plugins

For those looking for a solution to proper Excel usage with the CSV feature, Adam, of http://beernews.org/ offers this suggestion:

For any people using only Excel to alter CSV files and get errors when uploading, I think I have your fix.

1) Download the original CSV sample file here and right-click to open the file w/ notepad. Keep it open.

2) Right-click the sample again but open with Excel. Save in Excel. Right-click to open w/ Notepad again. See a difference (i.e. extra quotations all over the place?)

3) Excel puts double quotations around cells (aka fields) where there is a quotation by default but there is a workaround. Go to http://www.mcgimpsey.com/excel/textfiles.html

4) Scroll down to the heading ‘Text files with no modification’ and copy that code underneath.

5) Open that sample csv file back up in Excel

6) Click on Visual Basic Editor in Excel (I think you need to click on Macros in 2003 version or Developer tab in 2007 version)

7) Right-click sheet 1, click on insert module and paste the big code into the large white text box that opens up.

8) Click back to Excel view and click Run Macro. Choose the one that says ‘Text no modification’ and click run.

9) Check the directory on your local machine where you saved the sample file and look for test.txt. Open in notepad, save the file as a CSV file. But do you notice there are no more double quotes everywhere??

10) Upload new CSV file…seems like a pain, but this honestly takes about 2 minutes to do once you’ve learned it. 30 min learning curve.

Tagged with: , , ,
281 comments on “WordPress Plugin: Mass Page Maker
  1. I too have experienced problems with this plugin. My CSV format – which worked quite well prior to upgrading – no longer allows me to set the parent page. I’ve checked to see if syntax has changed, but I still don’t see why this is happening.

    Now I’m on the hunt for an older version.

  2. wesg says:

    @Jason Lancaster: A few changes were made in the most recent version, but it shouldn’t invalidate your previous format. If you want to be alerted to when I get a new version out, send an email to the address above. Also, the previous versions are available in the WordPress plugin repository under “Development Versions”.

  3. Chris says:

    What does Google think about it and how many pages does Google accept at once?

  4. Chris says:

    What does this mean?
    Fatal error: Call to undefined function term_exists() in …/wp-content/plugins/mass-page-maker/mass-page-maker.php on line 245

  5. Chris says:

    got it after i uploaded a small text file within the mpm. Before i saved the csv file (I got from your csv-builder) with Mac’s Textedit as plaintext and csv-extention.

  6. Chris says:

    btw… does it work with wp 2.9.2?

  7. Larry says:

    The plug-in is very useful except the set parent page ID does not work for WP 3.0.1. Anyone experience the same?

  8. Denin Shane says:

    Plugin works great. But i’m having issues with nesting the created pages into proper parent page. I know you say to use PageID but it doesn’t apply the parent to the created page/post. I’m using 2.6.7 on WP3.0.1.

    I’ve tried (assuming pageid is 132) 132, “132”, “parent”, and parent (with no “”)… any ideas?

  9. Denin Shane says:

    Forgot to mention that if you use the admin form and select the parent page from the dropdown, then the parent is applied properly. Only leaves it out if using csv file.

  10. Max says:

    hi, if i try to create a csv sheet at your site, save it as csv and import it to your plugin i get an Fatal error: Maximum execution time of 30 seconds exceeded (mass-page-maker.php on line 184), even if the csv have only 1 dataline to import. do you know how this could happened?

  11. Gideon says:

    Hi, pls tell me how to convert this .txt output below to CSV as i still get d error message, ‘ check line 1. 16 columns were found.’ The file is meant to create 3 test pages and this I suppose shld not exceed 3 rows on the . csv file. it gives 9 rows instead. Your response will be appreciated.

    “Abia State University, Uturu.”, 2010-08-24 08:08:08, “[wp_campaign_1]
    [wp_campaign_3]”, “”, uncategorized, 48, default , publish, page, open, open, “”, “”, “”, “”, 1
    “Adamu Augie College of Education, Argungu, Argungu, Kebbi State.”, 2010-08-24 08:08:08, “[wp_campaign_1]
    [wp_campaign_3]”, “”, uncategorized, 48, default, publish, page, open, open, “”, “”, “”, “”, 2
    “Adeniran Ogunsanya College of Education, Otto/Ijanikin, Otto/Ijanikin, Lagos State.
    “, 2010-08-24 08:08:08, “[wp_campaign_1]
    [wp_campaign_3]”, “”, uncategorized, 48, default, publish, page, open, open, “”, “”, “”, “”, 3

  12. Denin Shane says:

    @ Gideon: appears to me that you do have 16 columns. Plugin only accepts 15 columns. Looks like there is a trailing integer (in this case 1, 2 & 3) at the end of every row that is giving you one column too many

  13. chris says:

    Hi m8,

    Great script.

    I just installed it today. Everything works find except it publishes the post even though i have set the “draft” status field in the csv file.

    Any help?


  14. PPI says:

    We use this Plugin! Saves a lot of time

  15. Gideon says:

    @Denin Shane: Thanks for your assistance. I am able to create the pages now but the page ordering doesn’t work. Any suggestions?

  16. Denin Shane says:

    @Gideon: I don’t think the plugin accounts for page order at all. I could be wrong, but I think you would have to go into the PHP file and add it manually, which could be pretty intensive and I’m not exactly sure how to pull that off…

  17. Weight says:

    Wow! I found this plugin are very useful.

    Btw, I have one suggestion too. Can you add more future on this plugin to “automatic create post title via rss”?

    I need something like work automatically to create post title from rss feed.

    Unlike most other autoplugin make automatic posting via rss, they took the title of the article and a brief description or full.

    But I need a plugin that can perform automatic posting via rss, but the special title of article only.

  18. wesg says:

    @Weight: could you explain a little more about what you’d like? How is the RSS feed different from the blog content?

  19. John says:

    Gideon – i’m uploading via a csv file but my content is getting cut off – is there some kind of character limit for the post content? This is no use unless i can write as much as i like – i can’t have any character restrictions.


  20. John says:

    sorry, i meant to address that to WesG

  21. John says:

    it’s ok Wes – i had an error on my upload file – i had an apostrophe where it was getting cut off – i think it just needed to be commented out with a \ – thks anyway.

  22. John says:

    Hi WesG – i’m having an issue with my CSV upload – it’s to do with a semi-colon character within my custom key value field – as the custom field values use a semi-colon as their seperator, that means any semi-colon you have within the field value itself needs to be escaped – but no matter what i try i cannot escape it – i’ve tried \ \\ \” \;
    – none of these work, do you know how i can escape this semi-colon – it’s part of a script code which is the field value in this instance.

  23. Suzanne says:

    I am also having trouble with the sample CSV file. I”ve opened it in both excel as well as numbers and as a txt file…it seems like there are 17 fields inthe sample CSV. I tried to edit it to 15 files, all following the guidelines and still getting errors. I’ll try the suggestion above.

  24. Great script. But one little problem:

    It publishes the post even though i have set the “draft” status field in the csv file.

    Any solution?

  25. Hi! I think, i fixed the problem with the CSV Import and status problem:
    Just Insert
    $post_array[$row][‘post_status’] = $csvrow[7];
    in the line under //process post/page status comment-line in the mass-page-maker-php

    That’s all!

  26. How could I use this plugin to mass create custom pages that are now available in WP 3.0+? I am particularly using the JV Press GoPages plugin which once installed, allows you to create new iframed redirects. Is there any way to use Mass Page Maker to create a massive amount of new “go pages”?

  27. Mark James says:

    I tired everything – escaping characters, deleting columns to match 15, various .csv formats but no joy – gutted.

    Has anyone found a work around?

  28. Aaron says:

    Hi there,

    Can this plugin *replace* existing pages on a schedule? eg. If I have a page I want to auto-update once every 3 days over a span of several weeks, could this plugin do that?

  29. Max says:

    Hi, following csv input works but its making password protect while I set it to publish.

    “test titel 3”, “2010-08-12 10:12:12”, “test content in here”, “”, “uncategorized”, “0”, “Default”, “publish”, “post”, “open”, “open”, “”, “”, “”, “”;

  30. Max says:


    I want to thank you for this great plugin. Following csv input is working: “test titeltje 4”, “2010-08-12 10:12:13”, “content in here”, “test”, “uncategorized”, “0”, “Default”, “publish”, “page”, “open”, “open”, “”, “”, “”, “”


  31. John says:

    Hi WesG – plugin is working ok, but i have a couple of questions about the csv file and wp tables:
    1. What are the official WP headings for each column in the CSV file?
    2. What table(s) in WP database/phpMyAdmin does the CSV file get loaded to?
    Appreciate your help with this.

  32. John says:

    actually, just need to figure out what table the Post Category, Page Template, and Tags fields go in – I’ve checked in the wp_posts table but can’t find any column to match these?

  33. Will says:

    Hi – great plugin, really love it.
    One problem I’m having is that the content stops about half way on my pages – they aren’t THAT long, but still stop short. Is there a maxium page length, or is this a limitation of the field length on the CSV file? Would absolutely love to find a solution to this.

  34. Jason says:

    I am having the same problem. When importing a csv file and the post is set to draft it is publishing it not leaving it as a draft.

    Does anyone know a fix… otherwise this is the best plugin since sliced bread

  35. John says:

    Wes – Bug Report: The csv upload in this plugin is not adding the custom fields for me anymore – can you please look into this – I’m using WP3.0.5

  36. Bob says:

    Never got this plugin to work using CSV. The sample file provided has too many columns and doesn’t explain clearly how to format it. Tried all suggestions here. Emailed Wes last week and he never responded.

  37. wesg says:

    Thanks everyone for the comments and bug reports. I see that a lot of people are using the plugin, but have been unable to get the CSV importer working properly. I’ll do my best to look through them all and get an update out in the near future.

  38. Massimo says:

    The problem with the csv importer is in some fields of the table wp_posts that must be assigned a value (NOT NULL property in the definition)… also the plugin search for the 16th column that is the menu order of the page… but there is a check that prevent the plugin from working with csv with a number of column different from 15.
    Also the page_parent and menu_order field has problems (there are single quotes around an integer field in the SQL query)
    I’ve made quick changes to the plugin and now it seems to work…

  39. Kathleen says:

    I need to create about 150 product posts for a client and I think this is exactly the solution I need…if only I could get the CSV importer to work. I opened the sample CSV file in Excel, then imported it into TextEdit and cleaned it up and added my own content. But the plugin still thinks there are 20 columns in line 1. I’m willing to throw a few bucks at anyone who is more PHP/Wordpress-savvy than myself and can get this working for me! Argh!

  40. Wes says:

    @John: WordPress uses a number of tables for storing this data. Look in wp_term_relationships and wp_term_taxonomy.

  41. Forumcivico says:

    Wonderful plugin. Exactly what I have been looking for months.

    Thank you so much! Keep it up, it is a wonderful service.

  42. Mudassir imran says:

    I am working on a Plugin and my client using your Mass page maker plugin

    All post that are created by your plugin set the Post Status to Published even if it is Scheduled for next year.

    So due to this my plugin list all post that have post status “Published” and those post include that are scheduled for next year but as your plugin do not set post status to Scheduled.

    here is suggestion.

    If you can set the Post Status to scheduled if the post date is greator then current date so other plugin do not effected by this.

    i am waiting for new version with this new functionality.


  43. Dscj says:

    Hiii,i liked ur plugin very much and i am regularly using it.i had wordpress 3.0 installed that time it was working fine now i have moved to new host and updated wordpress but now the plugin is not working giving me error as

    Fatal error: Cannot use object of type WP_Error as array in /home/ziddiico/public_html/wp-content/plugins/mass-page-maker/mass-page-maker.php on line 313

    please help me to fix it.i will be thankful to u for this.
    wht caused it??i have uninstalled,deleted and again installed but error persists.thanks

  44. Polok_p says:


    I liketo use your plugin but on your site the download link is not working. Can you post a download link.


  45. Gloyns SEO says:

    For Polok and all others looking to download, I’ve got a copy of version 2.6.7. available on my site here – http://www.gloyns.com/mass-paker-maker-wordpress-plugin/

  46. Paul says:

    Is this project discontinued ?

    ( The dl link returns 404 )

  47. Aaron says:

    I would be happy to help translate this into Spanish. Do you know how many words are in the text to be translated?

  48. Matt Haff says:

    What happened to it, the download link is no longer active

  49. Anonymous says:

    The plugin seems to have disappeared from the WP repository. I know that WP changed some of the passwords, but that still doesn’t really explain why it’s no longer available. I’ll look into it while building the new version.

  50. fwolf says:

    It’s because they’re putting “old” plugins out of order. Seems to be a pretty braindead method thou, cause the criterium is the last update of the plugin and NOT whether is still working properly or not. Instead of just deleting them they should put em into an archive, and redirect download requests to a splash page that says something like: “this plugin hasnt been updated the last x month – using on your own risk => download link”

    cu, w0lf.