プロフィール画像をアップロードできるプラグイン Ps User Profile Image

前回の「WordPressのユーザー管理画面カスタマイズまとめ」で分かったことを元に、ユーザー編集画面からプロフィール画像をアップロード出来るプラグインを作ってみました。

ご覧のようにプラグインを有効化すると、ユーザーの編集画面にプロフィール画像の項目が追加され、画像をアップロードすることが出来るようになります。

まだ、設定画面などもありませんし、多言語もしていませんが、是非お試しください。

ダウンロード:Ps User Profile Image

仕様など

  • ユーザーの管理画面からプロフィール画像をアップロードすることができます。
  • デフォルトでは、thumbnail、standard、bigの3種類の画像が生成されます。
  • サイズや種類を変更したい場合は、プラグインファイル ps-user-profile-image.php の14行目から始まる $default_image_size の配列を編集してください。
  • 画像の拡大縮小は、切り抜きになっています。比率が異なると頭がちょん切れたりするので注意して下さい。
  • 表示させる場合のテンプレートタグは、ps_user_profile_image( $user_id, $size ); となります。この他に、パスだけを取得できる ps_get_user_profile_image_src というテンプレートタグもあります。

テンプレートのコード記述例

		<?php if ( function_exists( 'ps_user_profile_image' ) ) {
			ps_user_profile_image( 1, 'thumbnail' );
		} ?>

対応バージョン

3.0以降になります。(多分)

「プロフィール画像をアップロードできるプラグイン Ps User Profile Image」への23件のフィードバック

  1. WordPressを複数ユーザーで投稿しています。投稿毎に誰の投稿かわかるように投稿者のプロフィール画像が表示出来るようにしたいと思い、こちらにたどり着きました。
    早速ユーザー毎に画像を登録し、テンプレートに記述例の通り
    と追加しました。
    ところが、表示される画像全てが、admin(最初に登録している管理者)の画像となってしまいます。
    ユーザー毎の画像を表示させるには、上記コードではだめなのでしょうか?

  2. marc1947さん、こんにちは。

    記述例では、テンプレートタグのはじめの引数(括弧のなかの数字)が1と固定であり、大抵の場合ユーザーのIDが1の場合は、管理者になっています。

    なので、1となっている所を投稿したユーザーのIDになるようにしてあげれば、投稿したユーザーのプロフィール画像が表示されます。

    ユーザーのIDを取得するには、the_author_meta( ‘ID’ ) となりますので、テンプレート上では、

    ps_user_profile_image( the_author_meta( 'ID' ), 'thumbnail' );
    

    と記述いただければ良いかと思います。

  3. 早速のご回答ありがとうございました。
    回答いただきましたとおりコードを変更しましたところ、ユーザーIDの取得は出来ているようで、
    ID番号が表示され、対応したサムネイルが表示されません。

    上記でよろしいのでしょうか? 無知で申し訳ございません。

  4. marc1947さん

    すみません。the_author_metaは、そのまま出力してしまうのでした。

    ps_user_profile_image( get_the_author_meta( 'ID' ), 'thumbnail' );
    

    としてみてください。

  5. うまく表示されました。
    ありがとうございました。
    これを機会にコードを勉強させていただきます。

  6. 会員制サイトをめざしていますので、とてもすばらしいプラグインに出会えたと喜んでいます。

    初歩的な質問でほんとうにすみません。
    プロフィール画像はアップロードできたのですが、
    こちらのサイトのように、コメントのところに表示させるには
    テンプレートコードをどのファイルに書き込めばいいのか教えていただけませんか。
    wordPress 3.1.3 Twentytenを使用しています。

    もしかしたら、ユーザー全員のプロフィール画像が登録されていないと、
    画像のない人のところで処理が止まってしまうとかいうことありますか?
    ほんとに初歩的な質問ですみません。

  7. mariさん、こんにちは。

    全然初歩的ではなくて、それなりに難しいものになります。

    コメントに表示されている画像は、gravatarが利用されています。ここにプロフィール画像を表示したい場合は、テンプレートタグを使うのではなく、gravatarを取得している処理にフックして、プロフィール画像に差し替える処理を追加することで実現可能です。

    まず、Twenty Ten利用しているということなので、これと同じ画像サイズの画像が作られるようにプラグインを修正します。Twenty Tenの場合は40px四方になるので、avatarというサイズを追加し、40と指定します。異なるテーマでアバターのサイズが異なる場合は、そのテーマに合わせたサイズ設定としてください。

    	var $default_image_size = array(
    		'avatar'    => array( 40, 40 ),
    		'thumbnail' => array( 48, 48 ),
    		'standard'  => array( 96, 96 ),
    		'big'       => array( 120, 120 ),
    	);
    

    次にavatarにフックし、プロフィール画像があった場合、その画像に差し替える処理を、テーマのfunctions.phpに追加します。

    function profile_image_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
    	$user_id = false;
    	if ( is_numeric( $id_or_email ) ) {
    		$user_id = $id_or_email;
    	} elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id ) ) {
    		$user_id = $id_or_email->user_id;
    	}
    	if ( $user_id ) {
    		$src = ps_get_user_profile_image_src( $user_id, 'avatar' );
    		if ( $src ) {
    			if ( $alt === false ) {
    				$safe_alt = '';
    			} else {
    				$safe_alt = esc_attr( $alt );
    			}
    			$avatar = '<img alt="' . $safe_alt . '" src="'. $src . '" class="avatar avatar-' . $size . ' photo" height="' . $size . '" width="' . $size . '" />';
    		}
    	}
    	return $avatar;
    }
    add_filter( 'get_avatar', 'profile_image_avatar', 10 , 5 );
    

    なお、Twenty Tenをそのまま利用していると、WordPressのアップデートに合わせてテーマ自体が上書きされ、カスタマイズしている部分が消えてしまう可能性あります。
    Twenty Tenをディレクトリごとコピーし、ディレクトリ名とstyle.cssのテーマ名を変更するか、子テーマとしてカスタマイズしていった方が安全ですよ。

  8. できました〜っ、できました!
    ありがとうございます。

    はじめにログイン画面もページも真っ白になっちゃったんですが
    こちらのサイトの「WordPressで画面が真っ白になったら、最初にやるべきこと」で
    エラーの原因をみつけることができて、
    無事にプロフィール画像をコメント欄に表示する事ができました。

    テーマの件は気になっていたので、新しいディレクトリを作りました。

    ご親切に細かに教えていただいて、ほんとに助かりました。
    いろいろできるようになると楽しいですね。
    これから少しずつ勉強していきます。ありがとうございます。

  9. mariさん、よかったですね。
    おめでとうございます。

    これからも頑張ってくださいね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です