Получение PHP переменной из functions.php и ее вывод в файлах шаблона темы
Это может показаться простым вопросом, но я не могу разобраться.
Я создал переменную в файле functions.php и пытаюсь вывести ее в файлах шаблона.
Полагаю, проблема в области видимости переменных.
Какой самый простой способ вывести переменную или создать функцию, чтобы иметь возможность выводить этот Facebook ID в различных файлах шаблона.
Вот что у меня сейчас есть в файле functions.php...
$fb_app_id = '68366786876786';
И вот как я пытался его вывести...
<?php echo $fb_app_id; ?>
Любые идеи будут очень полезны, большое спасибо

Если у вас нет доступа к значению, скорее всего, это проблема с областью видимости. Сначала убедитесь, что вы объявили переменную как глобальную:
<?php
global $fb_app_id;
echo $fb_app_id;
?>
Альтернативный вариант
Мне не нравятся глобальные переменные, поэтому альтернатива, которую я рекомендую — использовать встроенный в WordPress механизм фильтров. Вы добавляете фильтр в файл functions.php
и применяете его там, где нужно.
В файле functions.php
:
add_filter( 'fb_app_id', 'return_fb_app_id' );
function return_fb_app_id( $arg = '' ) {
return '68366786876786';
}
В ваших шаблонных файлах:
echo apply_filters( 'fb_app_id', '' );
Или используйте хук действия
В файле functions.php
add_action( 'fb_app_id', 'echo_fb_app_id' );
function echo_fb_app_id() {
echo '68366786876786';
}
В ваших шаблонных файлах:
do_action( 'fb_app_id' );
Использовать хук действия или фильтр — решать вам. Я рекомендую фильтр, потому что он может возвращать значение. Это гораздо гибче, чем просто вставлять вызовы echo
в шаблоне.

нет, я бы не делал её глобальной, поэтому я и не добавил строку с global.

В данном случае я бы использовал опции WordPress. Вы можете установить опцию с помощью функций add_option()
или update_option()
(вероятно, для вашего случая лучше подойдет последняя). Вы можете использовать update_option('fb_app_id', '68366786876786');
где-нибудь в файле functions.php (хук init, вероятно, будет хорошим местом).
Затем вы можете отобразить эту опцию в файлах темы с помощью echo get_option('fb_app_id');
Причина, по которой я предлагаю этот способ вместо использования глобальных переменных (фу) или хуков действий/фильтров, заключается в том, что если вы планируете выпустить свою тему для публичного использования, будет гораздо проще сделать fb_app_id
редактируемой опцией на странице настроек темы.
