サポート » 使い方全般 » 寄稿者ユーザーの投稿記事に、ユーザー情報が表示されるようにしたい

  • 解決済 satochan

    (@satochan)


    現在、寄稿者ユーザーからの投稿を受け付けるポータルサイトを構築中なのですが、
    一点教えていただきたいことがございます。

    今の設定(デフォルト設定)では、寄稿者ユーザーが記事を投稿したときに、
    その記事にはユーザーのプロフィール情報(ユーザー名、写真)が表示されないように
    なっています。

    私がいまやりたいことは、
    寄稿者ユーザーが記事を投稿時に、

    その記事の上部に、プロフィールで設定した、
    寄稿者ユーザー名(ブログ上での表示名)と、ユーザー写真(User Photo プラグインでアップロード)が表示されるようにしたいです。
    *ユーザー名をクリックすると、プロフィールで設定したウェブサイトに飛ぶようにしたいです。

    これを実現するにはどうすればよいか教えていただけますと幸いです。
    よろしくお願いいたします。

5件の返信を表示中 - 16 - 20件目 (全20件中)
  • 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を使用してください。

    使い方はリンク先を参考にしてください。

    トピック投稿者 satochan

    (@satochan)

    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; ?>

    とかでも問題ないと思います(コードの検証はしてません)。

    トピック投稿者 satochan

    (@satochan)

    Tsuyoshiさん、

    すみません。しっかりと読んでいませんでした。
    Codexって、いままでとっつきにくかったのですが、いまじっくりと読んでみると
    非常に分かりやすいですね。

    本当に参考なりました。ありがとうございました。
    今後ともよろしくお願いいたします。

    ●一番したのコード、完璧に反映されました。ありがとうございます。

5件の返信を表示中 - 16 - 20件目 (全20件中)
  • トピック「寄稿者ユーザーの投稿記事に、ユーザー情報が表示されるようにしたい」には新たに返信することはできません。