WordPress update_user_meta不保存

时间:2014-05-25 02:21:45

标签: php wordpress

我创建了多个额外的usermeta字段,并通过后端使用WordPress工作。

但是,我正在尝试创建一个简单的表单,允许用户单击将字段保存到其配置文件的按钮。我一直都在通过StackOverflow,wordpress.stackexchange.com和wordpress.org论坛。人们似乎有这个工作,但我不能这样做。

非常感谢任何人可以帮助我的方式。

这是我的代码,在functions.php中:

function my_function() {
if (is_user_logged_in()) {
    global $post;
    if (has_badge()) {
        $current_user = wp_get_current_user();
        $badge_ID = get_post_meta($post->ID, 'badge_id', true);
        $badge_check = $current_user->$badge_ID;            
        $badge_id_1289 = get_user_meta( $current_user->ID, 'badge_id_1289', true);

        return '<form name="update_badges" action="#" method="POST">

    <fieldset>
    <label for="'.$badge_ID.'">Badge Name</label>
    <input type="text" id="'.$badge_ID.'" name="'.$badge_ID.'" value="'.$badge_ID.'" />
    </fieldset>

    <button type="submit">Claim Badge</button>
</form>';
    update_user_meta( $current_user->ID, 'badge_id_1289', $_POST['badge_id_1289'] );

} 
add_shortcode('subscribe','my_function');

$ badge_ID来自添加此短代码的帖子中的自定义字段,并且我已确认它正常工作(它显示为输入字段中的值,标签中的“for”等)< / p>

我一无所获。表单提交,页面重新加载,但没有任何内容保存到数据库,因此用户的个人资料中没有显示任何内容。

知道我还需要做什么,另外还有update_user_meta,或者这是一个短代码问题?

1 个答案:

答案 0 :(得分:0)

@brasofilo是正确的,问题是我在<{em> user_update_meta之前调用了return 。这是正确的版本:

function my_function() {
    if (is_user_logged_in()) {
    global $post;
    if (has_badge()) {
        $current_user = wp_get_current_user();
        $badge_ID = get_post_meta($post->ID, 'badge_id', true);
        $badge_check = $current_user->$badge_ID;            
        $badge_id_1289 = get_user_meta( $current_user->ID, 'badge_id_1289', true);
        update_user_meta( $current_user->ID, 'badge_id_1289', $_POST['badge_id_1289'] );
        return '<form name="update_badges" action="#" method="POST">
        <fieldset>
            <label for="'.$badge_ID.'">Badge Name</label>
            <input type="text" id="'.$badge_ID.'" name="'.$badge_ID.'" value="'.$badge_ID.'" />
        </fieldset>

        <button type="submit">Claim Badge</button>
    </form>';
} 
add_shortcode('subscribe','my_function');