Объявление функции: создание новой функции. Например: Код (Text): function myfunction($argument) { // какие-то действия return $result; } PHP будет ругаться если этот фрагмент попадет 2 раза на одну страницу. Так как 2х функций с одинаковым именем быть не может. Тут правильного ответа нет на самом деле, и то и другое приемлемо: с одной стороны виджет вызывается только в одном месте, поэтому можно include_once. Но если вдруг нужно будет разместить его где-нибудь еще на странице, то include. Я бы сделал сразу через include, чтобы не морочить потом голову и не вспоминать почему второй раз не подключается.
Дружище, используй _once. Тогда забудешь о головных болях. И о необходимости немного думать, где уже включил или "занеобходимил" или еще только подумал это сделать. Да и программирование ли это, когда не помнишь свой код? ПыСы: на прессе делаю визитки, иногда что-то посерьезней. Более серьезные проекты пишу с index.php
про include уже решил что не подходит вроде, про once понял, но функция объявления/создания виджета хоть и одна, но я этих виджетов могу хоть 10 в разных местах страницы в специально созданных под них зонах разместить и причем один и тот же... в принципе в дополнительном файле например такое PHP: /*---------Отключение стандартных виджетов -------------*/ add_action('widgets_init', 'unregister_basic_widgets' ); function unregister_basic_widgets() { unregister_widget('WP_Widget_Pages'); // Виджет страниц unregister_widget('WP_Widget_Calendar'); // Календарь unregister_widget('WP_Widget_Archives'); // Архивы unregister_widget('WP_Widget_Tag_Cloud'); // Облако меток } ок ) многие программисты с wordpress меня ругают за некрасивую тему, но я её код уже знаю , подэтому отказаться уже не смогу, придется допиливать. Да и сайт планируется чисто информационный. Там красивости не нужны. PS вопрос возник потому, что разработчики темы сами используют и с once и без once присоединение файлов php. Тема закрыта, Всем говорю спасибо, пока с once все работает без ошибок.
Ошибаетесь. Почитайте выдержку из мануала на английском на первой странице обсуждения. Будет выдано предупреждение и скрипт продолжит работу дальше.
@jurvrn.ru, при всём моём уважении к юристам... нельзя быть таким тупым. Тема на две страницы, хотя достаточно одного поста, а то и вообще можно было обратиться по средствам гугла в мануал и не засорять форум.
Берем листик формата А4 (или лучше А1, чтобы на стену повесить). Рисуем таблицу: заголовки столбцов "require", "include". Заголовки строк "с _once", "без _once". Читаем мануал и записываем особенности использования в ячейки таблицы. Запоминаем на всю оставшуюся жизнь и больше не задаём глупые вопросы)) --- Добавлено --- Только что жене (она медработник) на пальцах объяснил принцип 4-х вариантов - говорит, что поняла
Из уважения к вашей помощи сочту ваше обращение за ваше искренне желание добится понимания от меня) Но давно всё понял, про include просто опечатался. имел ввиду require. что ж тут непонятного, уже разъяснили, возможно я просто не правильно выражаюсь и поддерживаю общение - Спойлер: разъяснения да и главное что мне пытаются объяснить теорию, а на практике моего случая никто не отвечает - я подключаю к основному function.php файл function2.php, в котором отключаются стандартные виджеты и который создает новые виджеты. поэтому это не мой пример. У меня не стили и не код html.... Мой вариант require. Ну а логически чисто получается что мне не нужно постоянно создавать эти виджеты, нет вычисляемых переменных и т.п. достаточно один раз создать при запуске сайта, то есть once. Просто ещё сбило что сам разработчик сайта использует require get_template_directory() . '/admin/template-tags.php'; require_once get_template_directory() . '/admin/custom.php'; template-tags.php - это уже созданные функции, а custom.php - подключение функции, которая подключает стили пользователя (не сами стили, а функцию их подключения). Поэтому и вопрос - почему и так, и так....
@jurvrn.ru, да неважно что ты подключаешь, _once это защита от повторного подключения файла на уровне php. Никто не будет разбираться с твоим виджетом, что там у него под капотом. Просто используя функцию с _once , ты этот виджет сможешь подключить только один раз на странице. Дальше больше, я понятия не имею что это за такой виджет без которого не способен работать функционал сайта, лично для меня это дико.
это понятно из названия, просто мне то надо один раз или...? у wordpress можно подключить созданный виджет хоть сто раз в любой созданной зоне виджетов, на странице их может быть сколько угодно этих зон... без виджета все работает кроме этого виджета. Я уже писал что у меня с once нет ошибок, но разработчики используют и без once часть подключений... Понятно что надо проанализировать содержание файлов или их задумку, но не это проблема данной беседы. Пора закрывать тему.
Wordpress всё равно подключает functions.php темы только один раз. Так что ему без разницы, используете вы там _once или нет. Пишите везде строгие require или require_once вместо нестрогого include и не мучайтесь.
Использование require(_once) или include(_once) обусловлено данными которые они выдают, а именно : require если выполняется то выдаст 1 TRUE, иначе код остановится. include если выполняется то выдаст 1 TRUE, иначе выдаст 0 FALSE. + include может содержать в теле выражение return для получения данных из этого следует: require рекомендуется использовать если известно что файл статический и не будет изменять свое название. include рекомендуется использовать если файлы динамические, можно использовать в выражениях для получения данных из файла и языковых конструкциях. То есть просто подключить файл require. Какие то логические операции с файлом, получение данных из файла include.
@Павел Голубцов, в require также можно возвращать значения. И по поводу динамического формирования имен вы тоже не совсем точно написали.
Это краткая инструкция что такое require и include в чем их принципиальное, задуманное различие. Две страницы постов а сути я не уловил в них, вода водяная, поэтому написал. Возвращаемые значения есть require не возможно построить полнофункциональную логику. Пере прочитал, не увидел что я писал про какие то динамические построения имен, есть вышеописанная заложенность использования логики (тут можно коснутся еще на 3 листа), я понимаю люди устают, тупят, но это же php.ru или базар. P. S. Это краткое руководство достаточное для использования вышеупомянутых выражений, новичок сделает не ошибется а "бывалый" задумается все ли он знает об этих выражениях. Не уверен что есть в инете такое простое описание что делают эти выражения, может сейчас уже и появилось. И да, можно подключить после этот же файл, если использовать сперва (_once) и мы думаем что все уже второго не будет.
Снести, что-ли всю тему и поставить вместо неё https://php.net/manual/ru/function.include.php, https://php.net/manual/ru/function.require.php
Возможно. Хотя ХЗ, что вы подразумеваете под «полнофункциональной логикой». Если речь о статическом файле в обычном понимании этого словосочетания, то тут вообще readfile нужно использовать. Запускать на выполнение статик файл – идиотизм.
@mkramer Вы таки правы. Нужно сворачивать тему. А всему виной я: речь шла про require, а я со своим include'ом. Пысы: меня в универе в далёких 90-ых учили: настоящий инженер не тот, кто всё знает, а тот, кто может поднять мануал и найти решение своей проблемы. А так разговор ни о чем на две страницы.