Intereting Posts
Персонализированный URL-адрес для незарегистрированных в WordPress Сделать custom_post translatable GUID для связанного сообщения не на текущем языке Только текущие изображения галереи с get_attached_media $ wpdb-> get_results () дают ошибку внутри другого get_results 404 error next-page Таксономия пользовательского типа PageNavi Ссылка категории стиля в зависимости от идентификатора категории Разбитые разделы комментариев – Тема WordPress 2014 Как обновить форму виджетов при выборе изображения? Несколько опций в поле options_value таблицы wp_options Почему мне пришлось повторно сохранить настройку постоянной ссылки после перемещения моего сайта WordPress другому хостинг-провайдеру? Изменить все http на https в mysql databse? WordPress, добавляющий встроенный стиль, не может удалить его Как я могу запросить или отобразить определенное поле из надстроек продуктов WooCommerce? Крюк в фильтр_состояния Только для JSON API

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

У меня есть частичный вызов внутри 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 уже существует? Это кажется неэлегантным.

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')