Використовувати плагін або сниппет інфографіка, записки про wordpress

Багато стикаються з питанням: чи використовувати в WordPress плагін, або краще знайти рішення без плагіна, і прописати код у файлі functions.php (який ще називається сниппет)? У різних ситуаціях відповіді на це питання будуть різними.

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

На офіційному сайті WordPress в розділі для розробників наводиться наступний список тих можливостей, які слід виносити в плагіни:

  • Скрипти статистики відвідуваності
  • SEO-настроки
  • Кнопки типу "поділитися в соц. мережах "
  • Шорткоди для виведення контенту
  • Призначені для користувача типи записів і призначені для користувача таксономії
  • Видалення або модифікація функцій ядра WordPress
  • Відключення адмін-бару
  • Стиснення і кешування

Причому цей список, як сказано в документації, далеко не повний. Тому, особливо новачкам, іноді буває важко визначити, коли краще використовувати код в файлі функцій, а коли - плагін.

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

Що краще: код в functions.php або плагін?

Щоб полегшити вибір, я створила інфографіку, яка допоможе визначити, що краще використовувати для створення певної функціональності в WordPress в конкретному випадку: плагін або сниппет для functions.php

Використовувати плагін або сниппет інфографіка, записки про wordpress
Що краще використовувати в WordPress: сниппет або плагін? Інфографіка допоможе визначити, що краще використовувати для створення певної функціональності в WordPress: плагін або код в файлі functions.php

Розберемо на прикладі. Я хочу зробити шорткод, який буде оформляти текст в рамочку, і робити заливку фону зеленим кольором. Ось так:

це зразок дії шорткода

Моя тема зроблена на Bootstrap, тому для того, щоб зробити таке оформлення, мені потрібно дописати класи alert alert-success до div. в якому розташований текст. Йдемо по схемі:

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

Тому я розмістила свій код у файлі функцій.

  • функція потрібна для роботи з контентом
  • вона ним керує і створює новий контент, тобто створює Серії і дозволяє призначити пост до серії
  • і після зміни теми я б не хотіла втратити серії постів

Як перетворити сниппет в плагін?

Припустимо, ви знайшли цікавий код, який хотіли розмістити у файлі functions.php, але після прочитання цього посту передумали, і вирішили скористатися плагіном. Вам зовсім не обов'язково шукати плагін з таким же функціоналом, як і сниппет. Адже його можна легко превраріть в плагін!

Щоб зробити такий плагін, потрібно:

  • створити в папці / plugins / нову підпапку, і назвати її англійськими літерами без пробілів і заголовних букв
  • в цій папці створити новий порожній файл, і теж назвати його англійськими літерами без пробілів і заголовних

Тепер в файл, який ви тільки що створили, потрібно вставити такий код:

Такий спосіб перетворення фрагментів в плагіни буде працювати в 99% випадків. Це дуже зручно, так як управляти плагінами набагато простіше, ніж вставками в файл functions.php. І, всупереч поширеній думці, навантаження на сайт від такого плагіна більше не, ніж від того ж самого коду, вставленого в functions.

Ще по темі

Доброго дня, Ірино! Наскільки я зрозумів, такі функції є в деяких шаблонах типу Вставити свій CSS або вставити код в "тіло", але ваша функція тільки для functions php, Правильно?

Доброго ранку, Костянтин! Зазвичай у всіх постів до тегу article додаються такі класи:

Функція, яку я взяла за приклад, додасть до постів, у яких є мініатюра, клас has_thumb.

Це може знадобитися, наприклад, якщо Ви хочете, щоб у цих постів був фон іншого кольору, або рамка, або ще що-небудь, що відрізняє їх від посад, у яких мініатюра не задана.

Так, її можна вставити в functions, а можна оформити як плагін. Останній варіант буде набагато зручніше у використанні.

Те, що Ви виставляли в functions, можна по моїй інструкції зробити плагіном. А то, що виставляли в single, також треба вставляти в single 🙂

А я ось намагаюся по мінімуму плагінами користуватися ... але не завжди виходить, тому що кодіть я не дуже вмію.
Мені дуже сподобалася особливо частина поста про те, як зробити з коду плагін! За це окреме спасибі)))
До речі, шорткоди для оформлення статті - це дуже корисна штука, у мене вони з'явилися після установки нової теми, до цього і не знала про них.

Я теж намагаюся по мінімуму, але виходжу з того, наскільки мені та чи інша можливість дійсно необхідна, а не "можна зробити те ж саме без плагіна".

І в результаті у мене зараз коштує 24 плагіна, без яких я не уявляю, що б робила, і ще 4 деактивовані, але включаю їх кілька разів на місяць для виконання спецефических завдань (вони створюють власні елементи в меню, і в підсумку меню не поміщається повністю на екран нетбука, що мене дратує 🙂)

Ірина, то, що з коду можна зробити плагін - для мене стало одкровенням ... Еврика! Ось воно! А адже доводилося записувати в блокнот про внесені зміни, щоб не забути перенести їх при зміні теми ...

Все, що ви запишете в файл functions.php надалі буде втрачено при оновленні WordPress (особливо якщо оновлення налаштоване на автоматичний режим) тому краще на мій взлгяд не покладатися на цей метод а використовувати власні плагіни, як тут пише господиня блогу

Доброго дня, Ірино. Дякую за статтю. Питання мій трохи не по ній а може і по ній. вже зламав всю голову як загугли то що мені потрібно.
Загалом: у мене є сайт, його головна сторінка є довгою онучу (Ледінг) + у нього купа окремих сторінок в яких від першої (головної - Ледінг) залишається тільки шапка і підвал. Що я зробив. 1. нову тему для цього сайту. 2. коди підвалу і шапки виніс в відповідні файли. 3. в файлі page.php теми за умовою is_frontpage () виводиться статична частина Ледінг. Що мені потрібно зробити? найголовніше ці статичні шматки Ледінг зробити редагованими з адмінки. причому зробити це так щоб адміністратор сайту в майбутньому при редагуванні даних блоків тексту не міг порушити верстку теми.

Я вирішував таку задачу двома способами:
1. Реєстрація та висновок віджета (зручно для ШТМЛ). інформації багато як реалізувати.
2. Створення окремий рубрики для блоку. Функцією викликаємо блок. реалізацію робив (штмл + бутстрап)
2.1 створюємо рубрику для блоку в неї потім публікуємо потрібний пост.
2.2. створюємо див в потрібному місці. в діві робимо функцію викликає рубрику із зазначенням кількості постів (можна і 1 пост). циклами і стилями можна задавати стилі і висновок інформації + css

Корисна порада у Вас знайшов. Дякуємо. А щодо оновлень і того, що все злетить, паритися не треба. Робіть дочірню тему і експериментуйте з кодами скільки хочете. Навіть якщо все завалиться, завжди можна відкотитися до батьківської темі. Головною, на всякий випадок, робити дублікати потрібних Вам файлів, щоб все-таки до вести до розуму свою дочірню тему.

Схожі статті