1

我发现了一篇关于向用户个人资料页面添加额外字段的帖子。之后,我想将额外的字段保存到 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'} 这样的数组。

4

0 回答 0