在用户配置文件页面上获取基本图像上传程序

时间:2012-03-27 作者:rhand

我正在尝试向用户配置文件页面添加图像上载程序。我确实在一个基本的注册页面上安装并运行了它,但在添加到函数时,相同但稍作调整的代码不起作用。php。该字段已加载,WordPress允许轻松更新,但在纵断面图中没有显示图像。要获取图像并存储它,我使用

/********************************************************************
Profile Image Upload Field Code
*********************************************************************/
require_once( STYLESHEETPATH . \'/img_upload_resize_crop.php\' );

add_action( \'init\', \'custom_img_uploader\' );

function custom_img_uploader () {

    if (isset($_FILES[\'profilePicture\'][\'name\'])!= "" ) {

if ( $_FILES[\'profilePicture\'][\'name\']!="" ) {
    $your_image = new _image;
    $upload_dir = wp_upload_dir();
    //To Upload
    $your_image->uploadTo = $upload_dir[\'basedir\'].\'/\';
    $upload = $your_image->upload($_FILES[\'profilePicture\']);


    //To Resize
    $your_image->newPath = $upload_dir[\'basedir\'].\'/thumbs/\';
    $your_image->newWidth = 150;
    $your_image->newHeight = 200;
    $resized = $your_image->resize();
    $profilePicture=str_replace($upload_dir[\'basedir\'].\'/thumbs/\', "", $resized );
    unlink($upload);
}else{
    $profilePicture=\'\';
}
}
}
要以HTML显示字段,我有:

<!-- begin image uploader field -->
<tr>
<th><label for="profilePicture"><?php _e("Profile Image"); ?></label></th>
<td>
<input type="file" name="profilePicture" id="profilePicture" style="float:left;" />
</td>
</tr>
为了保存它,我使用以下方法:

update_user_meta( $user_id, \'userphoto_thumb_height\', 59);
update_user_meta( $user_id, \'userphoto_thumb_width\', 80 );
update_user_meta( $user_id, \'userphoto_thumb_file\', $profilePicture );
有人知道为什么在“纵断面图”中显示此代码:

<?php if(get_the_author_meta( \'userphoto_thumb_file\', $getId )!=""){?>
                        <img src="<?=$uploads[\'baseurl\'];?>/thumbs/<?=get_the_author_meta( \'userphoto_thumb_file\', $getId );?>" />
不加载存储的图像?

Update I and II

基本调试

Update III 添加后isset() 我更进一步:

[28-Mar-2012 07:14:46] PHP Notice:  Undefined variable: profilePicture in /home/user/public_html/wp-content/themes/theme-name/functions.php on line 346
在那条线上我有update_user_meta( $user_id, \'userphoto_thumb_file\', $profilePicture ); 看起来像是即使我有变量profilePicture 根据定义,它不是抓取的,它只是一个通知,似乎不相关,也不会导致上传问题。

Update IV

我将图像上传程序代码包装在一个函数中,并将其添加为一个操作。请参见上面的更新代码。我还有一个未定义的变量profilePicture 图像也没有上传。整个功能。php文件在此处http://pastebin.com/YGYz3Qnv

Update V

我刚刚意识到,对于profilePicture,我没有一个好的$\\u POST选项。看看@brasofilo在http://plugins.svn.wordpress.org/user-avatar/trunk/user-avatar.php 我看到了我可以使用的代码,但我需要对其进行大量调整:

<form enctype="multipart/form-data" id="uploadForm" method="POST" action="<?php echo admin_url(\'admin-ajax.php\'); ?>?action=user_avatar_add_photo&step=2&uid=<?php echo $uid; ?>" >
            <label for="upload"><?php _e(\'Choose an image from your computer:\',\'user-avatar\'); ?></label><br /><input type="file" id="upload" name="uploadedfile" />
            <input type="hidden" name="action" value="save" />
            <?php wp_nonce_field(\'user-avatar\') ?>
        <p class="submit"><input type="submit" value="<?php esc_attr_e(\'Upload\'); ?>" /></p>
    </form>
我只是想知道是否需要一个表单,因为它不适用于其他文本字段,以及我需要如何添加$user_id 以及如何调整update_user_meta

Update VI

…制造的$profilePicture 投稿人推荐的全球

Update VII

考虑使用来自无关媒体的选项here. 但我仍然需要相当长的时间才能将其集成到当前的功能中。php我会一直打开这个线程,直到我做到这一点。

3 个回复
最合适的回答,由SO网友:rhand 整理而成

谢谢大家的建议。最后,我选择了Woothemes媒体上传器集成,您可以在Github看到:https://github.com/devinsays/options-framework-plugin/blob/master/options-medialibrary-uploader.php 它被集成到一个主题框架中,我正在将其集成到我自己的主题中,这样我就可以一石二鸟了。

SO网友:brasofilo

检查此插件:User Avatar. 您可以使用它或检查它的功能以适应您的。

SO网友:Tom J Nowell

$profilePicture 已定义outside the scope 并且从未在全局范围中声明或使用。

因此,一旦upload函数返回,要么该变量被垃圾收集,要么您正在处理一个完全不同的共享相同名称的变量。

我会将其声明为全局变量,并添加更多验证,例如在尝试使用之前检查变量是否为空

结束

相关推荐