Как сделать переменную доступной внутри частичных?

У меня есть частичный вызов внутри single.php который выглядит так:

 <?php $userdata = get_userdata($post->post_author) ; ?> <div class="entry-meta"> <span class="byline author vcard"><?= __('By', 'sage'); ?> <a href="<?= get_author_posts_url(get_the_author_meta('ID')); ?>" rel="author" class="fn"> <?php echo ucfirst($userdata->user_nicename) ?> </a> </span> </div> 

Теперь $userdata может быть полезен в другом месте моего сингла. Поэтому я хочу, чтобы переменная и ее значение были доступны глобально во всех шаблонах, которые включаются всякий раз, когда мой сингл используется.

Итак, я вырезал первую строку: создание $userdata и помещенное ранее в «родительский» шаблон, который вызывается ранее в цикле.

Увы, переменная больше не была доступна для частичного. Я попробовал несколько других шаблонов, которые также называются ранее в цикле. Я получил тот же результат: переменная была недоступна.

Я думал о создании функции в functions.php . Но я могу придумать пару причин не делать этого. Прежде всего, зачем беспокоиться о абстракции для get_userdata() когда get_userdata уже существует? Это кажется неэлегантным.

Solutions Collecting From Web of "Как сделать переменную доступной внутри частичных?"

WordPress кэширует информацию пользователя. Там действительно не проблема просто позвонить get_userdata каждый раз, когда вам это нужно. Единственное, что вы делаете, переведя его в переменную $userdata это заставить WP извлечь ее из другого места в памяти.

Примечание: прочитайте этот пост для более общего решения о передаче переменных в частичные.

Существует два решения:

1) Используйте переменную, подобную этой глобальной $userdata ;

 $userdata = //object you want inside partial; 

а затем использовать

global $userdata; внутри этого single.php или loop и т. д.

Ссылка: https://developer.wordpress.org/reference/functions/get_template_part/

2) Продолжайте делать то, что есть, за исключением одного изменения вместо get_template_part use include_once('filename.php')