WPCodeBox: модифицирайте WordPress лесно

WPCodeBox: a WordPress Snippet Manager
WPCodeBox — модул за модифициране на външния вид и работата на WordPress и WooCommerce

Тази публикация е посветена на WPCodeBox — един инструмент, който открих наскоро и който бързо се превърна във важна част от моя арсенал със средства за създаване, подобряване на работата и поддръжка на сайтове и онлайн магазини, базирани на платформата на WordPress и WooCommerce.

Съществуват най-малко три различни начина за внасяне на промени по външния вид и работоспособността на сайт, базиран на WordPress и онлайн магазин с WooCommerce, всеки от тях с разнообразни предимства и недостатъци:

  • Редактиране на functions.php
  • Създаване на самостоятелен плъгин
  • Вмъкване на код чрез плъгин

Редактиране на functions.php

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

Стандартният начин на употреба на functions.php датира от древните времена на WordPress версия 2, но с течение на времето все повече разработчици започнаха да го използват, за да си спестят малко време, като публикуват вътре малки фрагменти код, които добавят или променят конкретни аспекти на поведението на платформата, незадължително свързани с работата на самата тема.

Поставянето на код във functions.php пести време, понеже този код се изпълнява точно като плъгин, но не е необходимо да се оформя като плъгин (самостоятелен .php файл с определено съдържание, поместен в дадена директория). Противоречива или не, в днешно време практиката да се ползва functions.php за модифициране на поведението на сайта като цяло, а не на конкретна тема, е изключително разпространена. Този подход има не малко предимства:

  • предлага най-бързото за реализация решение, с минимум възможност за привнасяне на грешки в работата на системата (освен в самия код, който се добавя към файла);
  • позволява на разработчика да групира всички промени на едно място;
  • позволява лесно деактивиране на проблемни елементи от кода чрез редакция на файла — дори и сайтът да забие, има лесно спасение.

Но въпреки това използването на functions.php не е панацея. Не малко съвременни теми използват активно този файл за собствени цели и понякога вътре са изсипани много килобайти програмен код. Когато се дописват промени към него, файлът бързо става претрупан и труден за преглед или редакция; при смяна на темата на сайта, кодът трябва да се пренесе във functions.php файла на новата тема; при актуализиране на темата е възможно промените да се изгубят; пренасянето на части от кода към други проекти е по-трудно, а отделните блокчета код е желателно да се съхраняват отделно в някаква система за контрол на версиите, за да могат да се използват и в други проекти.

Създаване на самостоятелен плъгин

Поради всички тези причини ще срещнете немалко разработчици, които предпочитат да пакетират на едно място всички промени, които правят по даден сайт. Това е отговорно решение с редица предимства пред предишното: всички направени промени са събрани на едно място и различен разработчик може лесно да се запознае със свършеното до момента, преди да поеме по-нататъшната поддръжка. Същевременно рискът крайният потребител да промени или изтрие кода на промените по невнимание при актуализация на темата е сведен до минимум.

Както се досещате обаче, този подход има и някои недостатъци. На първо място, това е ограниченото приложение на подобен плъгин. Колкото по-комплексни и специфични са промените, които се реализират чрез него, толкова по-малко става вероятно, че същият код ще върши работа без промени в друг проект. Това ни връща обратно към търсенето на решение за повторна употреба на кода и паралелната поддръжка на различни версии, което най-общо се групира под термина version control.

По-несъществени, но все пак реални други недостатъци на този подход са по-трудното деактивиране от команден ред (необходимо е да се използва WP-CLI или друг подобен инструмент), както и необходимостта от познаването и спазването на определени изисквания за съществуването на работещ плъгин.

Последният проблем има палиативно решение: услугата Pluginplate например позволява автоматизираното създаване на празен шаблон за плъгин, който отговаря на стандартите на WordPress и дори съдържа набор стандартни функции като readme.txt, GPL лиценз, конфигурационен файл, WP-CLI поддръжка и т.н., след което разработчикът само трябва да допише конкретния код, който трябва да се изпълнява.

За щастие, ако сте мързеливи като мен, има и още едно решение.

Вмъкване на code snippets

Използването на готов WordPress плъгин, който да включва направените от разработчика промени по платформата е идеално решение за разработчици по неволя като мен. В продължение на дълги години използвах модула WP Code Snippets, който решава доста от изброените по-горе проблеми: отделните блокчета код могат да се включват и изключват независимо едно от друго; може да се посочи дали да се изпълняват само в клиентската, само в административната, или и в двете части на сайта; може лесно да се следи и променя приоритетът на изпълнение на отделните фрагменти код; блокчетата могат лесно да се експортират и импортират.

WP Code Snippets

Управление на кодови фрагменти с WPCodeBox

Съвсем наскоро обаче срещнах едно по-ново решение, което функционира по подобен на WP Code Snippets начин, но добавя още малко допълнителни удобства: WPCodeBox. WPCodeBox взема най-добрите идеи на WP Code Snippets и ги доразвива в няколко посоки:

➡️ Освен PHP код, можете да добавяте CSS/LESS/SASS и JavaScript

Повечето добри съвременни теми за WordPress разполагат с такава възможност и е за предпочитане да използвате нея. Ако обаче работите по сайт, който използва по-стара тема, това е изключително удобство.

➡️ Можете да водите йерархична подредба на фрагментите

WPCodeBox ви позволява да организирате отделните кодови фрагменти в йерархичен вид, използвайки папки и под-папки. Аз лично използвам тази функционалност, за да групирам поотделно промените, касаещи заздравяването на WordPress (деактивиране на XML RPC, настройка на CSP политики и т.н.) от козметичните действия:

Примерна организация на фрагментите в WPCodeBox

➡️ Можете да синхронизирате кодовите фрагменти чрез облака

Тази функционалност в значителна степен елиминира сложната логистика около съхранението и достъпа до най-често използваните фрагменти, които влагам във всеки проект. Синхронизацията е двупосочна, което означава, че ако направя промяна по кода и я запиша локално, мога да кача това копие и на мястото на предишното в облака.

➡️ Предпазвате се от грешки при изпълнението на кода

WPCodeBox автоматично блокира изпълнението на кодови фрагменти, които причиняват проблеми в работата на сайта.

➡️ Можете да дефинирате условно изпълнение на кодови фрагменти

Съвсем наскоро беше представена изключително мощна система за условно изпълнение на фрагменти, която позволява филтриране по следните критерии:

  • Местоположение (клиентска и/или административна част на сайта)
  • Специфична публикация
  • Специфичен тип публикация
  • Таксономични единици — напр. публикации от конкретна категория, или определен тип продукти в Woocommerce
  • PHP условности — напр. is_home(), is_front_page() и т.н.
  • Page URL
  • Конкретен логнат потребител
  • Времеви диапазон
  • Ден от седмицата

Условното изпълнение може да се прилага двупосочно — при наличие или при отсъствие на посочения критерий. Могат да се комбинират две или повече условия; засега само с логическо произведение (AND).

Как функционира ядрото на WordPress

Един от водещите принципи на работата с WordPress е, че разработчикът трябва много съвестно да преценява необходимостта от всеки плъгин. Архитектурата на платформата е дотолкова отворена, че практически всеки аспект на нейното поведение или външен вид може да бъде променен. А изключителната й популярност гарантира, че съществуват десетки начини това да бъде направено — обичайно чрез инсталирането на плъгин.

Не дотам лесно разбираемият проблем на този подход е, че всеки активен плъгин се изпълнява при зареждането на всяка страница, което добавя минимално, но неизбежно закъснение при изпълнението на всяка заявка. Сложността на процеса на зареждане на една страница в WordPress може да бъде онагледена чрез великолепната схема, създадена от Андрей „Rarst“ Савченко преди 10 години, която е актуална и до днес:

В моите отговорности при проектирането, изработката и поддръжката на сайтове и онлайн магазини, базирани на WordPress, влиза задължението към клиента да си свърша работата по такъв начин, че готовият продукт да се зарежда максимално бързо и с минимално натоварване на сървъра. WPCodeBox ми помага в изпълнението на тази задача, като ми дава възможността да внасям промени във функциите и оформлението на платформата директно, вместо да ги обличам в самостоятелен плъгин.

За състоянието на WPCodeBox в момента и в бъдеще

WPCodeBox все още е съвсем нов продукт — първата му версия се появи април тази година — и работата по него далеч не е довършена, поне що се касае до функционалностите. Като стабилност софтуерът няма забележки, а където има визуални бъгове, те биват бързо и безмилостно ликвидирани.

Абонаментът за WP Code Box включва и достъп до немалка библиотека с готови и внимателно тествани кодови фрагменти, които можете да използвате наготово. Авторът на плъгина Ovidiu Maghetiu поддържа малка, но активна Facebook група, където помага на своите потребители с решаването на различни казуси за къстъмизацията на WordPress и WooCommerce.

Овидиу има амбициозни планове за по-нататъшно развитие (напр. чрез добавяне на deploy-only режим, т.е. само достъп до вече публикувани в облака фрагменти код, без възможност за качване, както и „опаковане“ на посочен набор фрагменти в самостоятелен плъгин — отново с цел намаляване на риска потребителят да разбута нещо).

Това, което също бих искал да видя в някакъв момент, е някаква система за контрол на версиите, която да ми позволява да поддържам архив на кодовите фрагменти и да мога да се връщам към предишна версия, ако по някаква причина най-новата версия създава проблеми и да имам възможност да управлявам конфликти между версиите чрез създаване и сливане на разклонения.

Въпреки потенциала за по-нататъшни подобрения, по мое мнение дори в момента WPCodeBox е функционално завършен инструмент и аз вече го използвам във всичките си проекти без притеснения.

Колко струва WPCodeBox и какво получавате за парите си

Засега плъгинът се предлага срещу еднократна такса; по-нататък се планира преминаване към таксуване на абонаментен принцип. Към момента се предлагат три плана: Solo ($59) за 1 сайт, Team ($99) за 5 сайта и Agency ($199) за неограничен брой сайтове, като най-малкият план има твърде малко и според мен напълно ненужно ограничение върху броя кодови фрагменти, които може да съхранява и достъпва онлайн.

По мое мнение Solo ($59) е почти безполезен най-малкото по две причини: силата на WPCodeBox се крие в лесната организация на фрагментите и лесната репликация на кода между множество сайтове, което практически не се налага, когато работите само върху един сайт. В такива ситуации нищо не ви пречи да работите през functions.php или да пакетирате всички промени в boilerplate плъгин.

Единствената потенциална полза за потребителите на Solo план, която виждам, е достъпът до поддръжка (разбирай, да попитате автора на WPCodeBox как да свършите конкретна задача и да разчитате той да има времето, желанието и необходимите знания да ви отговори) и възможността за ползване на библиотеката с готови и тествани фрагменти.

Ако пък отговаряте за повече сайтове, ограничението на екипната версия от 5 домейна ще ви отеснее рано или късно, а разликата между него и Agency версията е несъществена.

Към момента на публикуване на тази статия плъгинът все още се предлага на фиксирана, еднократна цена. Ако мислите, че той ще ви бъде полезен, можете да използвате промо код webstage, за да получите 25% намаление от цената на лиценза. Промо кодът е валиден и за трите плана на WPCodeBox (Solo, Team, Agency).

Всяка продажба има 30-дневна гаранция за връщане на парите, ако WPCodeBox не ви допадне по каквато и да е причина.

Повече информация ще намерите в сайта на WPCodeBox, като кликнете на бутона отгоре.

АКО НАПИСАНОТО ВИ ДОПАДА…

Абонирайте се за моя блог!

Ще получавате съобщение, когато публикувам нова статия. Можете да се отпишете по всяко време.

Email адрес

Подобни статии