どこにいるかによって異なります。単一のページを使用している場合(たとえば、{{Insert Post Type Here}}を1つだけ表示している場合)、を使用しget_queried_object
て投稿オブジェクトを取得できます。
<?php
if (is_singular()) {
$author_id = get_queried_object()->post_author;
$address = get_the_author_meta('user_email', $author_id);
}
他の場所にいる場合は、グローバル$wp_query
オブジェクトを使用して、その$posts
プロパティを確認できます。これは、単一のページでも機能するはずです。
<?php
global $wp_query;
if (!empty($wp_query->posts)) {
$author_id = $wp_query->posts[0]->post_author;
$address = get_the_author_meta('user_email', $author_id);
}
ループを「誤って開始」し、巻き戻して作成者IDを取得することもできます。これにより、追加のデータベースヒットなどが発生することはありません。WordPressは、すべての投稿を一度に取得します(執筆時点)。 rewind_posts
現在の投稿(グローバル$post
)オブジェクトを配列の先頭にリセットするだけです。欠点は、これによりloop_start
アクションが意図したよりも早く起動される可能性があることです-大したことではなく、単に注意すべきことです。
<?php
// make sure you're at the beginning.
rewind_posts();
// start the loop
the_post();
// get what you need
$address = get_the_author_meta('user_email');
// back to normal
rewind_posts();