ユーザープロフィールページに画像アップローダーを追加しようとしています。基本的な登録ページで起動して実行していますが、どういうわけか同じですが、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( 'userphoto_thumb_file', $getId );?>" />
保存された画像をロードしませんか?
IとIIを更新する
基本的なデバッグ
Update IIIisset()
を追加した後、もう少し詳しく説明します。
[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
ProfilePictureに適切な$ _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
を調整する方法
VIを更新
寄稿者の推奨に従って$profilePicture
をグローバルにしました
更新VII
無関係なメディアからのオプションの使用を検討する ここ 。しかし、これを私の現在の関数に統合するにはまだかなりの時間がかかるので、うまくいくまでこのスレッドを開いたままにしておきます。
皆さんの提案に感謝します。あなたがGithubでここに見ることができるように結局私はWoothemesメディアアップローダ統合のために行きました: https://github.com/devinsays/options-framework-plugin/blob/master/options-medialibrary-uploader.php It私は自分のテーマに統合しているテーマフレームワークに統合されているので、このように私は一石二鳥です。
このプラグインをチェックしてください: ユーザーアバター 。あなたはそれを使用するか、あなたのものを適応させるためにその機能をチェックすることができます。
$profilePicture
は 保存コードの範囲外 で定義されており、グローバルスコープで宣言または使用されることはありません。
結果として、アップロード関数が返すとすぐに、変数はガベージコレクションされるか、同じ名前を共有するまったく異なる変数を扱っていることになります。
私はそれをグローバルとして宣言し、それを使用しようとする前に変数が空であるかどうかをチェックするなどの検証を追加します。