RadCor
@RadCor
Если мой ответ вам помог, отмечайте его решением.

Как передать значение переменной между файлами шаблона на wordpress?

Есть основной файл index.php и допустим шапка header.php
В шапке header.php прописал переменную
<? $test = 'проверка' ; ?>
Дальше подключаем файл header.php в index.php
<? get_header(); ?>
И пытаемся в файле index.php получить данные из переменной:
<? echo $test; ?>
И ни хрена не получается.
Вопрос в том, как же передавать значения переменных между файлами шаблонов в wordpress ?
  • Вопрос задан
  • 8087 просмотров
Решения вопроса 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
UPDATE 2020:

Для будущих поколений: начиная с версии WordPress 5.5.0 функция get_template_part() поддерживает третий параметр array $args. Подробнее в официальном посте.

Оригинальный ответ:

+1 к ответу, Капитан Какао. Впрочем, я использую все-таки стандартный get_template_part() для удобства, а переменные передаю через другое API - query_vars:
// В файле из которого вызываем
set_query_var( 'my_var', $my_var );
get_template_part( 'content', 'part' );

// В вызванном файле
echo $my_var;

Почему так? Для очевидности, в этом случае ты наглядно понимаешь что передаешь в темплейт.
Ответ написан
RadCor
@RadCor Автор вопроса
Если мой ответ вам помог, отмечайте его решением.
Пришлось усердно погуглить, что бы найти решение.
А решение оказалось очень простым.
Вместо get_template_part() использовать более низкоуровневую функцию locate_template()
include (locate_template('header.php'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kasheibess
@kasheibess
веб уже не тот
Для любителей лаконичности и Yii style.
Определяем функцию
if (!function_exists('render_partial')) {
    function render_partial($template, $render_data)
    {
        extract($render_data);
        require locate_template($template);
    }
}


Использовать вот так (например):
render_partial('partials/simple-part.php', [
    'param' => 'Просто строка'
]);


В simple-part.php будет доступна переменная $param. И ничего запоминать не придется.
Ответ написан
@Mario62
Можно использовать $GLOBALS[ 'var' ] = '...';
И затем где надо echo $GLOBALS[ 'var' ];
Ответ написан
Комментировать
@awenn2015
Веб-программист самоучка
Смотрю вот ответы то хорошие, но что делать когда файл шаблона, например файл со script тегом который мы через хук wp_footer цепляем к странице, что бы не дублировать запросы к бд хорошей идей является как упомянул Mario62 передавать данные через $GLOBALS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы