Есть ли какие-либо глобальные functions.php файл, который подходит для любой темы?


Существует ли какой-то глобальный вид functions.php файл, который подходит для любой темы?

Проблема здесь:

Когда я изменяю functions.php файл в любой теме, мне нужно позаботиться о двух изменениях: во-первых, мне нужно позаботиться об обновлениях этой темы. Во-вторых, мне нужно позаботиться об изменении темы сайта.

Итак, вместо внесения изменений в functions.php темы, можно ли внести изменения в некоторые functions.php файл, который является независимо от какой-либо темы?

Author: Mert Nuhoglu, 2011-10-09

5 answers

Разница между тематическим и нетематическим кодом скорее организационная, чем техническая. Любой активный код вносит свой вклад в результирующую среду, не имеет значения, откуда он загружен.

Существует ряд мест, откуда загружается код, которые не являются частью ядра WordPress:

  • wp-config.php файл конфигурации
  • активная тема (и ее родительская тема для дочерних тем)
  • активные плагины
  • необходимо использовать плагины
  • выпадающие списки (это несколько продвинутый и служит очень специфическим целям)

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

 15
Author: Rarst, 2011-10-16 20:50:39

Что ж, это реальная проблема, и многие люди сталкиваются с ней, когда меняют тему, но есть простое решение.

Добавьте эту функцию на новую страницу, не functions.php и дайте ему уникальное имя, например, ваше имя+ метка времени или что угодно, но создайте уникальную папку с тем же именем, заархивируйте ее и загрузите в качестве плагина, чтобы она наверняка работала, пока вы ее не отключите.

Чтобы понять, какой плагин для чего, не пропустите, чтобы дать имя этому плагину, например:

/*
Plugin Name: XYZ
*/
 6
Author: Mohit Bumb, 2011-10-09 17:06:03

В качестве дополнения к ответу @mbthedeveloper.

Другими вариантами могут быть:

  1. Создайте дочернюю тему для вашей текущей темы и используйте functions.php файл из этого (это "лучшая практика").
  2. Используйте include в php-файле функции тем и загрузите custom-function.php файл, содержащий ваш пользовательский код.
 3
Author: kaiser, 2011-10-09 17:38:16

Не вносите изменения в тематику вашего сайта. functions.php файл.

Вместо этого создайте плагин для конкретного сайта. Мне нравится использовать доменное имя сайта, например"ottopress.com ". Затем поместите свои фрагменты в этот плагин и оставьте его активным только на этом сайте.

В качестве альтернативы, если у вас есть фрагмент связанных изменений, создайте специальный плагин только для них. Это дает вам возможность включать/выключать связанные фрагменты кода по мере необходимости.

 2
Author: Otto, 2011-10-16 22:10:58

Некоторое объяснение

Сначала вам нужно понять цель functions.php в теме. Functions.php в основном это просто файл плагина без какого-либо имени, который при наличии автоматически загружается Wordpress. Wordpress загружает вашу текущую тему function.php для интерфейсных страниц WordPress, а также для внутренних (административных) страниц.

Нет никакой разницы между плагином и functions.php за исключением того, что у плагинов есть имя, и они могут быть активированы/деактивированы независимо от других плагинов и тем. Тот funtions.php прикрепляется к вашей текущей теме, и если вы переключитесь на другую тему, Wordpress использует новую тему functions.php и не твой старый functions.php с пользовательскими модификациями.

Обновления темы также перезаписывают functions.php и этого невозможно избежать, даже если вы разместите свои пользовательские изменения в отдельных файлах кода и включите их в свой fucntions.php, вам придется добавлять эту строку после каждого обновления.

Как правило, тип код, который должен войти functions.php :

  • функции, которые используются в файлах шаблонов вашей темы.
  • параметры темы
  • боковые панели
  • меню навигации
  • форматы сообщений
  • размещать миниатюры
  • любой код, относящийся только к текущей теме.

Так как вы хотите сохранить свои пользовательские изменения, даже если вы переключите темы. Потому что дочерняя тема в этом случае не будет работать, так как вы переключите тему и functions.php дочерняя тема использоваться не будет.

Решение

Единственное решение, рекомендованное @Otto, - это создать файл плагина. Подход, который вы можете использовать для создания плагина для вашего сайта, заключается в создании папки с вашим именем сайта в разделе "wp-контент/плагины" и создании в ней файлов плагинов.

Зачем нужны файлы плагинов? и не один файл плагина.

Группируйте функциональные возможности сайта, связанные с кодом, в отдельных файлах плагинов и не забудьте добавить плагин заголовок во всех ваших файлах плагинов, чтобы Wordpress распознал их как отдельные плагины. Затем у вас будет возможность активировать/деактивировать различные функции/функции вашего сайта, не нарушая все.

 2
Author: Hameedullah Khan, 2011-10-17 10:25:57