取决于你在哪里。如果您使用的是单个页面(例如,仅显示单个{{在此处插入帖子类型}}),则可以使用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(全局$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();