I have a custom post type that is created when a user registers and a custom form for editing that information. Is there a way to add to that custom form fields from their user profile? Primarily looking to put email in as something they can edit and save. I saw a few posts that I could probably hack together in some way but want to find out what you'd recommend?
Hi,
Thank you for contacting us and I'd be happy to assist.
If you'd like to allow users to edit their 'user' information, from within a 'post' edit form, it will require code customization.
For example, for each user field that you'd like to be available, you'll add a generic field in the post-edit form. You'll fill those fields with the current/existing value from the user, as the default value, but the users will be able to make changes to these.
Once, the form is submitted, you can process and save those generic field values, in the respective user field, through the custom function attached to the 'cred_save_data' hook:
https://toolset.com/documentation/programmer-reference/cred-api/#cred_save_data
I hope this helps and please let me know if you need further assistance.
regards,
Waqar
Thanks.
I added the following the form and it displays (has a lot of data I'm sure not needed but first wanted it working). Then added the following code in the theme. But it's not saving. Probably close but can you let me know what I missed?
<div class="form-group">
<label for="%%FORM_ID%%_email-address">[cred_i18n name='email-address']What is your email?[/cred_i18n]</label>
<div class="js-wpt-field-items js-wpt-repetitive wpt-repetitive" data-initial-conditional="" data-item_name="user_email">
<input type="text" id="cred_form_885_1_1_user_email" name="user_email" value="[wpv-user field="user_email"]" class="form-control wpt-form-textfield form-textfield textfield" output="bootstrap" preset_value="" urlparam="" preview="" previewsize="" select_label="" edit_label="" value_escape="" make_readonly="" placeholder="" select_text="" data-wpt-type="textfield" data-wpt-id="cred_form_885_1_1_cred_form_885_1_1_user_email" data-wpt-name="user_email">
</div>
then in the functions.php added:
add_action('cred_save_data_885', 'save_user_profile_data_885',10,2);
function save_user_profile_data_885($post_id, $form_data)
{
$current_user = wp_get_current_user();
if (isset($_POST['user_email']) && $_POST['user_email'] !== $current_user->user_email) {
wp_update_user( array(
'ID' => $current_user->ID,
'user_email' => $form_data[ 'user_email' ]
) );
}
}
Thanks for writing back.
During troubleshooting, I noticed this line in your code:
'user_email' => $form_data[ 'user_email' ]
This line should be changed to get the value from the $_POST['user_email'] instead:
'user_email' => $_POST['user_email']
After this change, the code works on my test website.
Thanks. I changed it elsewhere but totally missed that. Duh!