我发现了一篇关于向用户个人资料页面添加额外字段的帖子。之后,我想将额外的字段保存到 usermeta 表中。我通过以下代码完成的。
add_action( 'personal_options_update', 'my_save_badge_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_badge_profile_fields' );
function my_save_badge_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
/* Copy and paste this line for additional fields. Make sure to change 'twitter' to the field ID. */
update_usermeta( $user_id, 'badge', $_POST['badge'] );
}
但是现在我想将一组值存储到“徽章”名称中,因为我在管理员的用户个人资料页面中添加了多个复选框,并且我在用户个人资料页面中添加更多复选框的代码如下所示。
add_action( 'show_user_profile', 'my_show_badge_profile_fields' );
add_action( 'edit_user_profile', 'my_show_badge_profile_fields' );
function my_show_badge_profile_fields( $user ) {
?> <h3>User Badges</h3>
<table class="form-table">
<tr>
<th><label for="twitter">Badges:</label></th>
<?php
$args = array(
'post_type' => 'badge',
);
// The query itself
$sb_user_query = new WP_Query( $args );
// The loop
while ( $sb_user_query->have_posts() ) : $sb_user_query->the_post();
$badge_id = $sb_user_query->post->ID;
$badge_title = get_the_title();
$badge_image_small = get_the_post_thumbnail( $badge_id, array(16,16) );
?>
<td>
<?php echo $badge_image_small; ?> <input type="checkbox" value="<?php echo $badge_title; ?>" name="badge">
</td>
<?php
endwhile;
?>
</tr>
</table>
<?php
}
现在我想将数据库中的 usermeta 表中的数据像数组一样保存,就像复选框中的名称是 'badge' 而值是像 {'a','b','c'} 这样的数组。