Залежить від того, де ти знаходишся. Якщо ви знаходитесь на одній сторінці (наприклад, показує лише один {{Insert Post Type Here}}), ви можете використовувати 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);
}
Ви також можете просто "помилково запустити" цикл і перемотати його, щоб схопити ідентифікатор автора. Це не спричинить жодних додаткових звернень до бази даних тощо. 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();