[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