update_usermeta don't work

时间:2014-07-26 作者:user57172

当我返回函数$setfound时,我会变成一个白色屏幕,当我返回$setlink时,它工作正常。

function editsteamlink(){
$setlink = $_POST[\'steamlink\']."/?xml=1";
$setresponse = wp_remote_get($setlink);
$setbody    = wp_remote_retrieve_body($setresponse);
$setxml = simplexml_load_string($setbody);
$setfound = $setxml->steamID64;
return $setfound;
}


function be_save_custom_avatar_field( $user_id ) {

    if ( !current_user_can( \'edit_user\', $user_id ) ) { return false; }

        update_usermeta( $user_id, \'steamid64\',editsteamlink());
        update_usermeta( $user_id, \'steamlink\', $_POST[\'steamlink\'] );

}

1 个回复
SO网友:helgatheviking

您应该启用WP_DEBUG 模式,这样死亡的白色屏幕将给您提供更有用的错误消息。

白色屏幕可能是打字错误造成的,但在我看来还可以。您的主机有simplexml_load_string()? 如果没有简单的XML库,这可能就是为什么返回$setlink有效,而返回$setfound会导致WSOD。

我对你的代码做了一些修改isset() 检查并确保您不依赖$_POST 在您的editsteamlink() 函数检查simplexml_load_string 函数存在。

function editsteamlink( $setlink = \'\' ){

    if( $setlink == \'\' || ! function_exists( \'simplexml_load_string\' ) ){
        return \'\';
    }

    $setlink = untrailingslashit( $setlink ) ."/?xml=1";
    $setresponse = wp_remote_get($setlink);
    $setbody    = wp_remote_retrieve_body($setresponse);
    $setxml = simplexml_load_string($setbody);
    $setfound = (string)$setxml->steamID64;
    return $setfound;
}


function be_save_custom_avatar_field( $user_id ) {

    if ( !current_user_can( \'edit_user\', $user_id ) ) { 
        return false; 
    }

    $steam_link = isset( $_POST[\'steamlink\'] ) ? $_POST[\'steamlink\'] : \'\';
    $steam_id = editsteamlink( $steam_link );

    update_usermeta( $user_id, \'steamlink\', $steam_link );
    update_usermeta( $user_id, \'steamid64\', $steam_id ); 

}
未经测试,因此您的里程数可能会有所不同!:)

结束

相关推荐

If is_single in functions.php

我希望删除wpautop筛选器仅对我博客中的帖子起作用。因为在某些页面,我需要autop,而在某些页面,我需要它不在那里。我使用以下规则,这是在我的主题函数中。php:remove_filter( \'the_content\', \'wpautop\' ); 因为我只想在博客上看到它,所以我在考虑if语句,我在Wordpress中搜索了条件标记页面,发现我可以使用is\\u single。但它不起作用。这是我现在使用的代码。if(is_single() ){ remove_f