satochanさん、こんばんは。
まず1つ覚えて頂きたいのが
WordPressのテンプレートタグや関数と呼ばれるものにはthe〜で始まるものと、get〜で始まるものがあります。
全てそうだとは断言できませんが、WordPressで最初から用意されているテンプレートタグや関数はthe〜で始まるものが出力系、get〜で始まるものが取得系と大体そうなっています。
ちょっとPHPのお話も混ざってきますがこの取得系のものはechoというPHPの命令文を書かなければ画面に値が表示されません。
つまりsatochanさんが
<?php get_the_author_url(); ?>
と書かれた部分は
<?php echo get_the_author_url(); ?>
と書かなければ、何も表示されず意味を成さないという事です。
<?php the_author_url();?>
と
<?php echo get_the_author_url(); ?>
は同じ働きをします。この二つはユーザの登録しているURLを出力(表示)してくれます。
そして、ユーザ名を表示しているのは以下の部分です。
<?php echo $user->display_name ?>
もしソースのどの部分がどこに表示されるかお分かりにならないのであれば、ブラウザのソースで表示してみて下さい。
そして通常のHTMLで考えますと
<a href="{ユーザの登録URL}">{ユーザ名}</a>
となると思います。
WordPressに置き換えると、{ユーザの登録URL}は<?php the_author_url();?>で、{ユーザ名}は<?php echo $user->display_name ?>の部分です。
どうでしょうか?
ごめんなさい、追記です。
テンプレートタグ the_author_url ですが、WordPress 2.8から非推奨になっています。
変わりにthe author metaを使用してください。
使い方はリンク先を参考にしてください。
Tsuyoshiさん、
下記のようにすることで、実現できました!!ありがとうございます!!
the_author_url –> the_author_metaにすべて変えると、URLになぜかリンクされなくなり、下記のように一箇所だけ、urlを残しておくと問題なくできました。
(私の使っているテーマが有料の特殊なものだからかもしれません。。)
<?php while ( have_posts() ) : the_post(); ?>
<?php // 記事を投稿した人のユーザIDからユーザ情報の取得 ?>
<?php $user = new WP_User( get_the_author_meta( 'ID' ) ); ?>
<?php echo get_the_author_meta(); ?><a href="<?php the_author_url();?>"><?php echo $user->display_name ?></a>
<?php // 寄稿者だったら表示名を出力 ?>
<?php if( in_array( 'contributor', $user->roles ) ) : ?>
さんからの投稿
<?php userphoto_the_author_photo(); ?>
<?php endif; ?>
<?php endwhile; ?>
satochanさん、こんにちは。
the_author_metaですが、使い方はリンク先を参考にして下さいと言いましたがご覧になられましたか?
例えばURLの出力は以下のようになります。
<?php the_author_meta( 'user_url' ); ?>
<?php echo get_the_author_meta( 'user_url' ); ?>
the_author_urlの使用はお勧めしません。
このテンプレートタグは WordPress 2.8 から非推奨となりました。後継となる新しいテンプレートタグが作られたか、動作対象外となり、WordPress の将来のバージョンで削除される見込みです。 このタグを使っていた場合は、後継の the_author_meta に切り替えてください。
また以下の部分は条件分岐タグと行ってコメントにも記述していますが、ユーザの権限グループが寄稿者の場合にifからendif;までのブロックのコードが出力されています。
<?php if( in_array( 'contributor', $user->roles ) ) : ?>
ユーザの権限グループが寄稿者の場合この文章が表示されます。
<?php endif; ?>
satochanさんが書かれたコードですと、さんからの投稿 の部分が寄稿者ユーザの場合しか出力されないので、権限グループによる条件分岐が必要なければ
<?php while ( have_posts() ) : the_post(); ?>
<a href="<?php the_author_meta( 'user_url' ); ?>"><?php the_author_meta( 'display_name' ); ?></a>さんからの投稿
<?php userphoto_the_author_photo(); ?>
<?php endwhile; ?>
とかでも問題ないと思います(コードの検証はしてません)。
Tsuyoshiさん、
すみません。しっかりと読んでいませんでした。
Codexって、いままでとっつきにくかったのですが、いまじっくりと読んでみると
非常に分かりやすいですね。
本当に参考なりました。ありがとうございました。
今後ともよろしくお願いいたします。
●一番したのコード、完璧に反映されました。ありがとうございます。