web-dev-qa-db-ja.com

著者の名前から著者の名前を取得する方法

このような最近の投稿を表示したいです。

<ul id="recent-posts">
  <?php foreach( wp_get_recent_posts() as $recent ){ ?>
    <li>
      <a href="<?php echo get_permalink($recent['ID']); ?>">
    <?php echo $recent["post_title"]; ?> by
    <?php echo $recent["post_author"]; ?>
      </a>
    </li>
  <?php } ?>
</ul>

しかし$recent["post_author"]は作者のidだけを返します。そしてこれはThe Loopの外側なので、the_author()関数は使えません。

IDから著者の名前を取得する方法それとももっと良い方法がありますか?

3
ironsand

get_user_by() :を試してください。

get_user_by( $field, $value );

あなたの場合は、IDとユーザーIDを渡します。

// Get user object
$recent_author = get_user_by( 'ID', $recent["post_author"] );
// Get user display name
$author_display_name = $recent_author->display_name;
8
Chip Bennett
echo get_the_author_meta('display_name', $recent["post_author"]);
// code from deprecated.php function @get_author_name

get_the_author_meta($ meta_key、$ author_id)の他の例 あなたはCodexで見つけることができます。

8
Butuzov

wp_get_recent_posts()で照会しているテーブルであるwp_postsテーブルには、著者名の列は含まれていません。 (あなたがすでに見つけたように)それは作者IDだけを持っています。

だから、あなたがしなければならないのはget_user_by()と呼ばれる別のWordPress関数を使うことです。これで 作成者ID を取得して対応する 作成者名 を見つけることができます。

このようなものは動作するはずです(未テスト)。

<ul id="recent-posts">
<?php foreach( wp_get_recent_posts() as $recent ){

    $user_id = get_user_by('id', $recent["post_author"]);  // Get user name by user id
        ?>
        <li>
        <a href="<?php echo get_permalink($recent['ID']); ?>">
        <?php echo $recent["post_title"]; ?> by
        <?php echo $user_id->display_name; ?>
        </a>
        </li>
    <?php 
    } ?>
</ul>
0
josh