Есть вариант, приближенный к нормальным подходам
условно в вашем index.php
do_action("my_content");
Пример контента для author.page (надеюсь вы понимаете, что этот код не вставляется в author.php)
class AuthorPage {
public function __construct()
{
add_action('content', [$this, 'template']);
}
public function data(): array
{
global $wp_query;
$user = $wp_query->get_queried_object();
if (!($user instanceof WP_User)) {
return [];
}
return [
'title' => $user->first_name,
];
}
public function template(): void
{
if (!is_author()) {
return;
}
get_template_part("template-parts/author", null, [...$this->data()]);
}
}
сам template-parts/author.php:
<?php echo esc_html($args['title'] ?? ''); ?>
Идея нормальных подходов в том, чтобы не мешать логику и верстку. Все данныe получаете в классе, и передаете в теплейт, где уже и верстаете