I have spent the last couple of hours on the forums trying to figure out how to actually do this when the existing blog and forum are currently seperate databases.

My situation is as follows:

– wordpress 2.3 blog with no users (except admin)

– bbpress 0.8 forum with many users

I want to get to a wordpress 2.5 blog and a bbpress 0.9 forum with an integrated database.

I think the steps are:

1. upgrade wordpress to 2.5

2. upgrade bbpress to 0.9

3. then?…. how do I combine the database?

Or can I keep the seperate databases and still get the benefits of combined cookies and users carried from wp to bb and vice versa? If so, how do I bootstrap the wp database with the existing bb users?

All the integration code assumes you start with a blog and want to add a forum. However, if you start with a forum, chances are the forum’s user database will be far larger than the blog. The technique below outlines how I did it. This is entirely at your own risk. I’ve not gone over the standard things, like shared secret keys: I’m assuming you’ve read the basic integration guides.

0. You’ll need to be familiar with .htaccess, SQL at raw database level, and template hacks. If your level of expertise is “pressing buttons”, stop reading here. This is very easy to mess up, so make plenty of backups. Ideally test the whole conversion first, and probably prepare scripts to run if a lot of database changes are needed.

1. Block public access to the blog and forum for all except your IP using .htaccess.

2. In the database, rename wp_users and wp_usermeta. These won’t be used, but you will need them later to cross-reference old posts to new authors. I’m assuming a standard install that uses wp_ and bb_ as prefixes.

3. Copy bb_users and bb_usermeta to wp_users and wp_usermeta respectively. Keep the original tables for now.

5. Delete the WordPress install, but keep the old database tables (and plugins and themes). Install WordPress in its former position. Use an entirely new user name as your new WordPress admin. (The purpose of deleting and then installing WordPress is to create a genuinely new admin user in the table. For me, this was faster than manually adding an admin user and making sure all the correct permissions were set. You mileage may vary.)

6. How much extra work you need to do to your old WordPress tables depends on the number of authors that were active on WordPress: Using SQL, you’ll need to change all the old author IDs in wp_posts and wp_comments to match that author’s ID from the forum. It is possible there are other user references deep in the system, so be careful. I had little complexity to deal with. If your were the first to register for both your forum and blog, the important IDs may match perfectly already.

7. Most WordPress templates use the user’s display_name. This is unfortunately, because BBPress tends to use user_login. The result is that most WordPress references to user names will appear blank. You’ll either need to populate the display_name column, or hack around with your WordPress templates so that they use user_login. Template call get_the_author_login() is perfect for authors, but for comment references I had to use get_usermeta($user_id,’user_login’) or comment_author_link() where $user_id was 0. Messy. Since the admin side of WordPress uses display_name anyway, it is probably a lot easier to populate that column.

8. Your WordPress install should be now more-or-less working. Let’s return to the forum!

9. It is very easy to accidentally destroy the forum Keymaster, locking yourself out of the forum before integration is complete. If this happens, edit the table bb_topicmeta by deleting the final few lines with meta_key starting “wp_”.

10. On the forum admin, under WordPress Integration: Set the User role map such that Admin links to Keymaster and everyone else is a subscriber, and save. Add “wp_” under User database table prefix and save. Hit the User role map button again. Finally complete the cookie setting and save. The order is important – simply filling in all the boxes and saving can wipe out the old Keymaster access before the new one has been set up.

11. In WordPress, check the user list. I found that some user types did not convert automatically – notably moderators. Hopefully 99% of users will have been automatically assigned as subscribers. If you use a lot of plugins, take care that nothing conflicts. For example two separate plugins trying to write user meta data using the same key name. You may also wish to test a dummy registration and profile change.

12. Remove the old bb_users and bb_usermeta, and the copies of your original wp_users and wp_usermeta.