Чи є якийсь глобальний файл function.php, який працює на будь-яку тему?


11

Чи існує якийсь глобальний вид функції function.php, який працює на будь-яку тему?

Проблема тут:

Коли я змінюю файл function.php в будь-якій темі, мені потрібно подбати про дві зміни: По-перше, мені потрібно подбати про оновлення цієї теми. По-друге, мені потрібно подбати про зміну теми сайту.

Отже, замість внесення змін у function.php теми, чи можна внести зміни в якийсь файл function.php, який не залежить від будь-якої теми?


4
Чи дійсно щедрість потрібна? На питання вже є хороші відповіді
onetrickpony

Оскільки @Mohit Bumb був тим, хто дав a) баунті і b) був першим, хто запропонував використовувати плагін, я б сказав, що він повинен отримати той, хто отримує точки повтору (назад). ІМО щедрот не було необхідності (і я припускаю , що він не знав , що він насправді віддати його геть ).
кайзер

Відповіді:


15

Різниця між тематичним та нетематичним кодом є організаційним, а не технічним. Будь-який активний код сприяє створеному середовищу, не має значення, звідки він завантажений.

Існує кількість місць, з яких завантажується код, які не є частиною ядра WordPress:

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

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


+1 і вам, і @kaiser. Я вважаю, що правильна відповідь: 1) Створіть дочірню тему, щоб розмістити власну функціональну функцію functions.php, або 2) створити спеціальний плагін для розміщення цієї функціональності, щоб він був переносним серед різних тем.
Чіп Беннетт

@Chip, оскільки питання задає питання про збереження коду при переключенні тем, я не вважаю дочірню тему такою, що відповідає. Що робити, якщо ви хочете перейти на тему, яка є дочірньою темою? Плагін є найбільш відповідним для заданих вимог.
Рарст

тому я обидва ви голосували. :) Але ви все одно можете використовувати Тему для дітей при переключенні тем; просто змініть Template:тег належним чином у дочірній темі style.css.
Чіп Беннетт

@Чіп ти не зрозумів мою думку. Що робити, якщо я хочу використовувати дочірню тему? Я створюю дитячу тему для двадцяти одинадцяти за допомогою свого коду. Потім я хочу перейти до теми, яка також є дочірньою темою двадцяти одинадцяти (або іншого батьківського). У мене немає шляху, окрім ручного об'єднання двох дочірніх тем. Потім наступний раз, коли я зміню тему, з’єднайте її. Це безлад.
Рарст

Я використовую must-use для цього. Я вважаю, що це швидкий, прямий спосіб додавання функцій, гачків та
шорт-кодів,

6

Ну, це справжня проблема, і багато людей стикаються з нею, коли вони змінюють тему, але є прості рішення.

додайте цю функцію на нову сторінку not function.php і дайте їй унікальне ім’я, наприклад, yousitename + timetamp або що завгодно, але унікальну папку з тим же ім'ям застебніть і завантажте її як плагін, щоб вона точно працювала, поки ви не відключите її .

Щоб зрозуміти, який плагін для чого не пропустіть, щоб надати ім’я цьому плагіну, наприклад:

/*
Plugin Name: XYZ
*/

3

Як додаток до відповіді @MBTheDeveloper.

Інші варіанти:

  1. Створіть дочірню тему для вашої поточної теми та скористайтеся файлом function.php із цієї (це "найкраща практика").
  2. Використовуйте includeу своїх темах функцію php-файлу та завантажте користувальницький-function.php файл, який містить власний код.

2

Не вносьте конкретні зміни до свого сайту у файл function.php теми.

Натомість створіть плагін, орієнтований на сайт. Мені подобається використовувати доменне ім’я сайту, наприклад "ottopress.com". Потім вставте свої фрагменти в цей плагін і залиште його активним лише на цьому сайті.

Крім того, коли у вас є фрагмент відповідних змін, створіть певний плагін для них. Це дає вам можливість включати / вимикати пов'язані біти коду за потребою.


2

Деякі пояснення

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

Між плагіном і function.php немає різниці, за винятком того, що плагіни мають ім'я, і ​​вони можуть бути активовані / деактивовані незалежно від інших плагінів та тем. Funtions.php додається до вашої поточної теми, і якщо ви переходите на іншу тему, Wordpress використовує нову тему function.php, а не стару функцію.php зі спеціальними модифікаціями.

Тематичні оновлення також переписують function.php, і немає способу цього уникнути, навіть якщо ви помістите власні модифікації в окремі файли коду та включите їх у свій fucntions.php, вам доведеться додавати рядок, що включає рядок після кожного оновлення.

Як правило, тип коду, який повинен входити у function.php:

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

Оскільки ви хочете зберегти свої власні модифікації, навіть якщо ви переключите теми. Тому що дочірня тема не працюватиме в цьому випадку, оскільки ви переключите тему, а функції.php дочірньої теми не використовуватимуться.

Рішення

Єдине рішення, як рекомендує @Otto, - створити файл плагінів. Підхід, який ви можете скористатися для створення конкретного додатка для вашого сайту, полягає у створенні папки з назвою вашого сайту у "wp-content / plugins" та створенні в ньому файлів плагінів.

Чому плагінні файли? а не один файл плагіна.

Функціональні можливості сайту, пов’язані з кодом, пов’язані з кодом в окремих файлах плагінів, і не забудьте додати заголовок плагіна у всі ваші плагінні файли, щоб Wordpress їх розпізнавав як окремі додатки. Потім у вас буде можливість активувати / деактивувати різні функції / функціональність вашого сайту, не порушуючи нічого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.