Делал один мультивиджет, заметил некоторые странности в работе и решил проверить экпериментальным путем. Создал такой фукнционал виджета:
if(!$i){
$i = 5;
}
echo $i; $i++;
И если вывести два виджета на одной странице, то каждый из них выводил значение 5.
Решил пойти дальше. Сделал так чтобы значения переменных, необходимых для отображения в виджете, хранились в отдельном файле, который приклеил в сайдбаре через require перед выводом виджетов. Конечно, виджеты упорно не видели включенный файл и не могли считать значения переменных. Как я понял, виждет исполняется не на самой страничке а где-то внутри а на страницу отджает только результат. Так вот вопрос в том, как сделать так чтобы если перед виджетом на странице есть переменная, то он мог ее видеть – Можно ли сделать так чтобы виджет не был чем то вроде айфрейма, а исполнял php непосредственно на странице, исходя из "окружающей обстановки", если вы меня понимаете…
Учите матчасть 🙂 Эти "странности" описаны в мануале http://www.php.net/manual/ru/language.variables.scope.php
Спасибо, а если пойти по другому пути… Существует какой-то способ подготовить в виджете пхп -код для вывода чтобы он срабатывал на самой странице? Грубо говоря сделать что-то типа echo "<?php echo ‘5’; ?>"; 🙂 Понимабю как это по-чайниковски звучит, но уверен, что какой-то способ печать пхп код с посощью самого пхп должен существовать, разве нет?
Ага, якось чайникувато 🙂 Что крайне удивительно, учитывая Ваш опыт. Наверно, Вы просто не очень внимательно смотрели на WP с обратной, программной стороны, а в основном с лицевой – той, где html.
Вообще-то, есть виджеты, похожие на текстовый, но выполняющие php-код, используя тривиальный eval(). Если, конечно, я правильно понял последний пост.
Ну не знаю откуда у вас впечатление о большом опыте у меня. По времени может и опытный я, но все крутиться на циклах да на десятке усвоенных функций 🙂 Все от того что учусь только на задачах, а не так что прочитал 100 книг и думаю чтобы такое написать 🙂
Почитал про области видимости и eval но все равно не щелкнуло, как я например должен "глобализировать" такой код мультивиджета
Не побоюсь быть чайником, но приписка static к переменной $res вызвала ошибку (из-за того в переменную передается значение функции?). require_once надо наверное разбить на части – путь в одну статическую переменную, а к самой функции с указанием переменнойс путем, насколько я понял, надо приатачить global, так?
Я понимаю, что с такими вопросами мне больше подошел бы форум по php, но все таки это ведь касается работы виджетов ВП 🙂
Ю.Б., спасибо что не ответили, включил моск, немного экспериментов и теперь мои навыки пополнились новой функцией 🙂
Завсегда велькам! 🙂