My solution to:
Add Custom Fields to User Profile & Registration Pages
http://wordpress.org/support/topic/55434
Copy and paste this into a php file in your plugins directory. I’ll get a file you can download setup shortly.
Update: Here download it => here.
<?php
/*
Plugin Name: Add To User
Plugin URI: https://www.andrewferguson.net/wordpress-plugins/
Plugin Description: Allows adding mySQL Data fields to store/add more user info
Version: 0.1
Author: Andrew Ferguson
Author URI: https://www.andrewferguson.net/
*/
/*Use: Allows adding mySQL Data fields to store/add more user info
/*
Add To User - Allows adding mySQL Data fields to store/add more user info
Copyright (c) 2006 Andrew Ferguson
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
$fergcorp_addField = array(
array( "legend"=>"Favorite ColorLegend",
"description"=>"What is your favorite color:",
"label"=>"Color",
"inputName"=>"wp_favColor",
"inputType"=>"text",
)
);
add_action('show_user_profile', 'fergcorp_addToUser_addFields');
add_action('personal_options_update', 'fergcorp_addToUser_updateFields');
function fergcorp_addToUser_addFields(){
global $wpdb, $user_ID, $fergcorp_addField;
foreach($fergcorp_addField as $thisField){
?>
<fieldset>
<legend><?php _e($thisField['legend']); ?></legend>
<p class="desc"><?php _e($thisField['description']); ?></em></p>
<p><label><?php _e($thisField['label']); ?><br />
<input name="<?php echo $thisField['inputName']; ?>" type="<?php echo $thisField['inputType']; ?>" value="<?php echo $wpdb->get_var("SELECT ".$thisField["inputName"]." FROM $wpdb->users WHERE ID = ".$user_ID." LIMIT 1"); ?>" />
</label></p>
</fieldset>
<?
}
}
function fergcorp_addToUser_updateFields(){
global $wpdb, $current_user, $fergcorp_addField;
foreach($fergcorp_addField as $thisField){
$wpdb->query("UPDATE $wpdb->users SET ".$thisField["inputName"]." = '".$_POST[$thisField["inputName"]]."' WHERE ID = ". $current_user->id." LIMIT 1");
}
}
?>
Notes:
This is a very alpha version. It works and you shouldn’t have any issues with it. You’ll need to manually add the field to your wp_users table. I will fix that in a future release. The data is set via an array within an array. To add another data field, just add a second array within the first. Again, I’ll make that more user friendly in a future release.
0