satochanさん、こんばんは。
ちょっと合ってるかどうか不安ですが、以下の様な感じで記事の投稿ユーザのIDを元にユーザ情報を取得して実現できないでしょうか。
ちなみに、User Photoプラグインはバージョン 0.9.5.2 をWordPress3.4.2に入れてみたところ、デバッグモードで警告が出たので個人的にはお勧めしません。
<?php while ( have_posts() ) : the_post(); ?>
<?php
// 記事を投稿した人のユーザIDからユーザ情報の取得
$user = new WP_User( get_the_author_meta( 'ID' ) );
// 寄稿者だったら表示名及び写真を出力
if( in_array( 'contributor', $user->roles ) ) {
echo 'この記事は"' . $user->display_name . '"さんが投稿しました。';
userphoto_the_author_photo();
}
?>
<?php endwhile; ?>
Class Reference/WP User « WordPress Codex
Function Reference/get the author meta « WordPress Codex
Tuyoshiさん、
ありがとうございます。たすかります。
今、functions.phpのほうへコピーしてみたのですが、エラーが出てしまいます。。
私自身、WordPress初心者、かつ、コードをかけないものなので、
上記の私のアクションについて、間違っていましたらご指摘いただけますと大変助かります。
お手数ですが、何卒よろしくお願い申し上げます。
提示したコードはテーマのテンプレートファイルに書くものであり、投稿を表示するループも書いてますので、どのようにされたか分かりませんがそのままfunctions.phpに貼り付けますと動かないと思います。
例えば上記の例をそのまま書くとしたらsingle.phpとかですね。
しかし既存のループの中に貼り付けないようにご注意下さい。
<?php while ( have_posts() ) : the_post(); ?>
が投稿ループの開始であり
<?php endwhile; ?>
の部分が投稿ループの終了部分です。
初心者ユーザ様とのことで、手前味噌ですが以下も参考にされてみて下さい(functions.phpについては記載しておりませんが)。
WordPress初心者テーマ作成勉強会
Tsuyoshiさん、ありがとうございます。
single.phpにコードを入れたあと、
実際に、寄稿者ユーザー(ユーザーのウェブサイト設定済)から投稿して確認して
みたところ、動作したのですが、以下の現象が確認できました。
写真と名前が出てきたのですが、
写真と名前が、記事の上ではなく、サイトのヘッダーのところにでてきて
しまいました。
また、名前にはリンクが張られていませんでした。
こちらのほうで不手際がありましたら、ご教示いただけますと幸いです。
表示位置はコードを挿入した位置によってHTMLの出力も当然変わりますので、ヘッダーの上に書いてるのだと思います。
リンクは提示した例では貼っておりません。
しかし取得したユーザ情報から引っ張ってくることは可能だと思います。
先ずは表示位置の件を頑張ってみてください。
コードを入れた場所は表示させたい場所に貼付けたんでしょうか?
自分できちんと考察しないでは、せっかくのアドバイスは活かせません。
フォーラムで回答してくれる人たちは一日張り付いてみてるわけではないんで
自分でカスタマイズしたいのなら、自分でよく噛み砕いてから再質問した方がいいですよ。
一つ補足です。
しかし既存のループの中に貼り付けないようにご注意下さい。
と書きましたがループの中に二重でループを書かないでねという意味で、ユーザー情報出力の部分は書けますので、そと辺りはWordPressの基本を先ずは勉強されると良いと思います。
Tsuyoshiさん、
親切にありがとうございます! 挿入したいところに入れることができました!!
少しづつ理解できるようになってきました。
http://665-667.com/2009/12/18/143149
リンクの関しては、まさに上記のURLに書いていることをやりたいのですが、
‘<?php if (get_the_author_url()) { ?><あ href=”<?php the_author_url();?>”><?php the_author_nickname();?></あ><?php } else { the_author_nickname(); } ?>’
を、Single.phpに入れてみたのですが、
‘この記事は”●●”さんが書きました。<あ href=”プロフィールのウェブサイトのURL/”>ニックネーム’
という表記なり、寄稿者ユーザーのところにリンクが貼られません。
どこか、変更が必要なところがあるのでしょうか。。
お知恵をいただけますと幸いです。
(なぜ、”あ”というひらがなが入っているか理解できません)
済みません、きちんと読んではいませんが転載サイト含めて書いているコードが間違っているのでは?
単なるタイプミスだと思うのですが(あではなくa)。
<あ href〜とか書いてるためタグとして認識されていないのでそのまま表示されているだけでは?と思うのですがどうでしょうか。
Tsuyoshiさん、
ありがとうございます。”あ”は”a”でした。
aにすることによって、
この記事は”●●”さんが書きました。<あ href="プロフィールのウェブサイトのURL/">ニックネーム
という表記が、
この記事は”●●”さんが書きました。【写真】 ”●●”
となり、右側の”●●(ニックネーム)”にだけウェブサイトへのリンクが
貼られました。
欲を言いますと、左側の”●●”にリンクが貼られるようにしたいのですが、、
もし可能であれば、コード変更の仕方をご教示いただけますと大変助かります。
ここでコードを教えてしまうのは簡単ですが、どこのコードがどこに表示されてるかを考えれば、どこを変えれば良いか分かってくるんじゃないかと思います。
一応タグっぽい書き方に直したのでこちらの方が分かりやすいかも知れません。
後はご自身で頑張ってみてくださいね。
<?php while ( have_posts() ) : the_post(); ?>
<?php // 記事を投稿した人のユーザIDからユーザ情報の取得 ?>
<?php $user = new WP_User( get_the_author_meta( 'ID' ) ); ?>
<?php // 寄稿者だったら表示名を出力 ?>
<?php if( in_array( 'contributor', $user->roles ) ) : ?>
この記事は"<?php echo $user->display_name ?>"さんが投稿しました。
<?php userphoto_the_author_photo(); ?>
<?php endif; ?>
<?php endwhile; ?>
Tsuyoshiさん、
大きなヒントをいただき、ありがとうございました!
チャレンジしてみます。
Tsuyoshiさん、
上記の件、まだ格闘中です。
かなりいい線まで行っていると思うのですが、
<?php get_the_author_url(); ?>“>
を下記のように追加すると、”ユーザー名”だけではなく、
【”ユーザー名”さんからの投稿】←全体にリンクが貼られてしまいます。
”ユーザー名”だけにリンクを貼るようにするためのヒントをいただけると
大変助かります。
<?php while ( have_posts() ) : the_post(); ?>
<?php // 記事を投稿した人のユーザIDからユーザ情報の取得 ?>
<?php $user = new WP_User( get_the_author_meta( 'ID' ) ); ?>
<?php get_the_author_url(); ?><a href="<?php the_author_url();?>">
<?php // 寄稿者だったら表示名を出力 ?>
<?php if( in_array( 'contributor', $user->roles ) ) : ?>
"<?php echo $user->display_name ?>"さんからの投稿
<?php userphoto_the_author_photo(); ?>
<?php endif; ?>
<?php endwhile; ?>