このような最近の投稿を表示したいです。
<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から著者の名前を取得する方法それとももっと良い方法がありますか?
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;
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で見つけることができます。
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>