Получение PHP переменной из functions.php и ее вывод в файлах шаблона темы

4 мая 2012 г., 18:46:00
Просмотры: 51.4K
Голосов: 9

Это может показаться простым вопросом, но я не могу разобраться.

Я создал переменную в файле functions.php и пытаюсь вывести ее в файлах шаблона.

Полагаю, проблема в области видимости переменных.

Какой самый простой способ вывести переменную или создать функцию, чтобы иметь возможность выводить этот Facebook ID в различных файлах шаблона.

Вот что у меня сейчас есть в файле functions.php...

$fb_app_id = '68366786876786';

И вот как я пытался его вывести...

<?php echo $fb_app_id; ?>


Любые идеи будут очень полезны, большое спасибо


2
Комментарии

Закрыто как не по теме. Это вопрос по программированию/PHP, а не по WordPress.

Chip Bennett Chip Bennett
4 мая 2012 г. 18:53:09

Используйте global $your_var; echo $your_var; или echo $GLOBALS['your_var'];.

kaiser kaiser
4 мая 2012 г. 19:33:38
Все ответы на вопрос 3
1
18

Если у вас нет доступа к значению, скорее всего, это проблема с областью видимости. Сначала убедитесь, что вы объявили переменную как глобальную:

<?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 в шаблоне.

4 мая 2012 г. 18:59:05
Комментарии

Поддерживаю метод на основе фильтров. Гораздо чище.

Rutwick Gangurde Rutwick Gangurde
3 мар. 2016 г. 11:01:57
3

самый простой способ — просто создать вызываемую функцию, здесь вам действительно не нужен хук

function get_fb_app_id() {
    $fb_app_id = '68366786876786';
    return $fb_app_id;
}

и в шаблоне:

echo get_fb_app_id();
4 мая 2012 г. 19:01:14
Комментарии

Оберточная функция для возврата глобальной переменной??

kaiser kaiser
4 мая 2012 г. 19:33:54

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

fischi fischi
5 мая 2012 г. 17:10:04

Хорошо. Тогда почему она не внутри function? Сейчас функция просто выбросит Error: undefined (...).

kaiser kaiser
6 мая 2012 г. 18:09:45
0

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

Затем вы можете отобразить эту опцию в файлах темы с помощью echo get_option('fb_app_id');

Причина, по которой я предлагаю этот способ вместо использования глобальных переменных (фу) или хуков действий/фильтров, заключается в том, что если вы планируете выпустить свою тему для публичного использования, будет гораздо проще сделать fb_app_id редактируемой опцией на странице настроек темы.

4 мая 2012 г. 19:44:47