问题描述
我正在尝试将图像上传器添加到用户个人资料页面。我确实有一个基本的注册页面运行,但不知何故相同,但稍微调整的代码在添加到 functions.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(%20'userphoto_thumb_file',%20$getId%20);?>" />
不加载存储的图像?
更新一和二
基本调试
更新 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
定义,它不被抓住只是一个通知,似乎没有相关,也不会导致上传问题。
更新 IV
我将图像上传器代码包装在一个函数中,并将其添加为一个操作。请参阅上面的更新代码。我还有一个未定义的变量 profilePicture
也不是上传的图像。整个 functions.php 文件在这里 http://pastebin.com/YGYz3Qnv
更新 V
我只是意识到我没有一个很好的 $ _POST 选项的 profilePicture 。看看在 http://plugins.svn.wordpress.org/user-avatar/trunk/user-avatar.php 的 @brasofilo 提到的插件我看到这个代码我可以使用,但我需要调整很多:
<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
更新 VI
根据贡献者的推荐,制作全球 $profilePicture
更新七
考虑使用来自无关媒体 here 的选项。但是,由于我将时间花费在我现在的 functions.php 中,所以我会保持这个线程打开,直到我设法完成这个。
最佳解决方案
感谢大家的建议。最后,我去了 Woothemes Media Uploader 集成,你可以在这里看到 Github:https://github.com/devinsays/options-framework-plugin/blob/master/options-medialibrary-uploader.php 它被整合到一个主题框架中,我将整合在我自己的主题中,这样我就可以用一只石头杀死两只鸟。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。