Поддержка Проблемы и решения Передача переменных в get_template_part

  • В шаблоне записи прописываю:

    <?php
    $arr= array ("Первый" => "orange", "Второй" => "banana", "Третий" => "apple");
    ?>
     <div>
    	<?php get_template_part( 'product' ); ?> 
     </div>

    В файле product.php массив $arr не доступен.
    Проверка

    if ($arr) echo "есть";
    else echo "нет";

    выводит «нет».

    ЧЯДНТ? Как передать значение массива в template_part?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Модератор Yuri

    (@yube)

    ЧЯДНТ?

    Не учитываете области видимости переменных в php.
    Матчасть: https://www.php.net/manual/ru/language.variables.scope.php

    Как передать значение массива в template_part?

    Если основной шаблон обрабатывается в основном потоке, а не внутри какой-либо функции, то может помочь global $arr; в частичном шаблоне.

    Не учитываете области видимости переменных в php.
    Матчасть: https://www.php.net/manual/ru/language.variables.scope.php.

    Хмм. По ссылки написано что

    Эта единая область видимости охватывает также включаемые (include) и требуемые (require) файлы.

    а get_template_part ведь аналог include. Т.е. по идее должно быть видно.

    Но спасибо, попробую объявить глобальным.

    Модератор Yuri

    (@yube)

    а get_template_part ведь аналог include.

    С какой радости? get_template_part() — функция вордпресса. Кстати, как и get_header() и get_footer() — самые частонаступаемые грабли.

    Да, global $arr; помогло.
    Ещё раз спасибо.

    С какой радости?

    Я так понял из https://wp-kama.ru/function/get_template_part

    Похожа на PHP функцию include(), только не нужно указывать путь до темы.

    Модератор Yuri

    (@yube)

    помогло

    Отлично!

    Модератор Yuri

    (@yube)

    Похожа на PHP функцию include(),

    Назначением похоже, да. Но не более. Да и к тому же include вообще не функция, а оператор языка 🙂

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Передача переменных в get_template_part» закрыта для новых ответов.