Based upon the code found here: How To Add Custom Form Fields To The User Profile Page?
How Could I alter this so that users could check one of several boxes based upon categories I have setup in the blog.
E.g. If I have categories:
Apples
Oranges
Bananas
Id like these to appear in the User Profile area with a checkbox next to each so that a user can select which fruit they like best.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
here is an example
//create the user category fields
add_action( 'show_user_profile', 'add_user_categories' );
add_action( 'edit_user_profile', 'add_user_categories' );
function add_user_categories($user ){
?>
<table class="form-table">
<tr>
<th><label for="user_categories"><?php _e("User categories"); ?></label></th>
<td>
<?php
$data = get_the_author_meta( 'user_categories', $user->ID );
$args = array( 'hide_empty' =>0, 'taxonomy'=> 'category');
$categories= get_categories($args);
if ($categories){
foreach ( $categories as $category ){
if(in_array($category->term_id,(array)$data)) {
$selected = 'checked="checked""';
} else {
$selected = '';
}
echo '<input name="user_categories[]" value="'.$category->term_id.'" '.$selected.' type="checkbox"/>'.$category->name.'<br/>';
}
}
?>
</td>
</tr>
</table>
<?php
}
//save the user category fields
add_action( 'personal_options_update', 'save_user_categories' );
add_action( 'edit_user_profile_update', 'save_user_categories' );
function save_user_categories( $user_id ){
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
update_usermeta( $user_id, 'user_categories', $_POST['user_categories'] );
}
and go get the stored data just use:
$data = get_the_author_meta( 'user_categories', $user->ID );
and $data will be an array with all of the categories the user has selected.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0