[wp-hackers] Why do some user meta entries use the table prefix in the meta key?

David Anderson david at wordshell.net
Sat May 11 20:51:30 UTC 2013


I've developed some code that imports a WordPress database, and allows a 
change of $table_prefix whilst you do so. i.e. If the site you're 
importing had a different table prefix, then you can change it as you 
import.

The running of the SQL import itself works fine - that's just some 
regexes before executing the SQL.

However, testing it out has revealed something I did not know before - 
that various entries in the usermeta table have meta_key entries that 
depend upon the table prefix. Essential example: if your prefix is wp_, 
then your user will have an entry wp_capabilities, which contains your 
capabilities.

So, those also need renaming - otherwise you can't even log in (because 
the entries being looked for aren't there).

Whilst researching, I came across this plugin: 
http://wordpress.org/extend/plugins/change-table-prefix/

It appears to know about this phenomena. It makes two adjustments:

i. (prefix)_user_roles in the options table
ii. Then all those beginning with (prefix) in the user meta table.

Questions:

1. Why does WordPress do this? On the face of it, it seems like a gross 
layering violation - table keys depend on the names of tables. But the 
WP core coders are smart guys, so there must be a reason.

2. Are there any others that anyone knows about? Any other hidden 
hazards to changing your table prefix?

Thank you!

David

-- 
WordShell - WordPress fast from the CLI - www.wordshell.net



More information about the wp-hackers mailing list