取决于你在哪里。如果您在一个单一的页面上(例如,只显示一个{{Insert Post Type Here}}}),您可以使用get_queried_object
, 将获取post对象。
<?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();