Вордпрес 5.1.1

Вордпрес 5.1.1 је доступан. Ово је издање које доноси закрпе безбедоносних пропуста откривених у Вордпресу за сва ранија издања као и поправке неких откривених грешака у Вордпресу 5.1.

Молимо вас да одмах ажурирате своје издање.

Вордпрес окупљање у Београду #WPBGD 6. мартa

У новом издању #WPBGD своја искуства са Вама ће поделити Alexander Gilmanov и Игор Хрчек.

Као и до сада, дружимо се у StartIT центру у Савској улици, преко пута поште са 6.марта 2019 године, са почетком у 18 часова.

Настави са читањем „Вордпрес окупљање у Београду #WPBGD 6. мартa“

Нови Сад – 11 Радионица за израду Вордпрес тема, 02 март 2019

Једанаеста радионица за израду Вордпрес тема је одржана у суботу, 02 марта у новосадском Стартит Центру. Наставили смо са могућностима новог уређивача у теми: правили шаблоне блокова, варијације стилова, мале измене подразумеваних блокова помоћу доступних Javascript филтера. Срели смо се и са wp.i18n и WP CLI.

Шаблон блокова

У документацији новог уређивача тренутно стоји да се шаблони блокова могу додавати преко register_post_type функције за прилагођену врсту чланка или путем get_post_type_object за предефинисане врсте чланка (чланак, страница). Оба ова начина подразумевају качење на init копчу акције.

Ми смо погледали шта нам нуди WP_Post_Type класа и пронашли register_post_type_args филтер који нам омогућава да додамо шаблон директно у аргументе вресте чланка, при чему је провера врсте значајно олакшана.

Сам шаблон представља низ назива блокова и њихових параметара и доста је једноставан за израду. Међутим, пронаћи називе блокова и доступних параметара захтева мало претраге. Све ово још увек није документовано и морамо погледати кôд како бисмо дошли до информација које нам требају.

Тренутно постоје два места где можемо пронаћи назив и параметре блокова. Важно је имати у виду да су се ова места већ мењала и да се то може опет догодити. Ово не мења кôд који ћемо користити (мада се и то до сада већ мењало) али мења место на коме тражимо информације док не буде постојала детаљнија документација за развој.

У самој инсталацији Вордпреса постоји датотека у којој су помоћу Webpack-а генериасани сви блокови. То је тренутно /wp-includes/js/dist/block-library.js. Међутим, како је ово генерисана датотека, доста је напорно читати цео кôд како би се пронашле потребне информације.

Због тога смо ми погледали место где је кôд уређивача у фази пре генерисања, тзв фази развоја, и где је значајно лакше пронаћи информације које нам требају. Тренутно је то https://github.com/WordPress/gutenberg -> packages -> block-library -> src. Овде сваки блок има своју фасциклу и све што нам треба можемо пронаћи у index.js датотеци за сваки блок.

Конкретно за блок параграф можемо пронаћи име у константи name:

export const name = 'core/paragraph';

А доступне параметре у константи schema:

const schema = {
	content: {
		type: 'string',
		source: 'html',
		selector: 'p',
		default: '',
	},
	align: {
		type: 'string',
	},
	dropCap: {
		type: 'boolean',
		default: false,
	},
	placeholder: {
		type: 'string',
	},
	textColor: {
		type: 'string',
	},
	customTextColor: {
		type: 'string',
	},
	backgroundColor: {
		type: 'string',
	},
	customBackgroundColor: {
		type: 'string',
	},
	fontSize: {
		type: 'string',
	},
	customFontSize: {
		type: 'number',
	},
	direction: {
		type: 'string',
		enum: [ 'ltr', 'rtl' ],
	},
};

Дозвољене вредности за сваки параметар нису документоване па је могуће стећи погрешан утисак из назива параметра. На пример, textColor не прихвата кôд за боју већ slug предефинисане или прилагођене боје. У нашој теми би то биле: whitish, redish, grayish и blckish (functions.php – ‘editor-color-palette’). Исто важи и за fontSize, величина фонта није дозвољена вредност већ slug предефинисане или прилагођене величине.

Провера врсте чланка нам омогућава да веома лако раздвојимо шаблоне према врсти чланка што је прилично честа потреба. Тако можемо имати посебан шаблон за странице и посебан за чланке.

Закључавање шаблона

Постоје два нивоа закључавања шаблона:

  • ‘insert’ – Не дозвољава додавање нових блокова али дозвољава промену места постојећим блоковима.
  • ‘all’ – Не дозвољава ни додавање нових блокова ни промену места постојећим блоковима. Ово може бити веома корисно када је неопходно придржавати се дефинисаног распореда али треба имати у виду да је могућ губитак садржаја уколико постоје већ објављени чланци или странице пре него што им је шаблон додељен. Уколико дође до ове могућности, корисник ће бити упозорен обавештењем.

Важно је напоменути да се сви параметри могу мењати у току уноса садржаја без обзира да ли је шаблон закључан или не.

Варијације стилова блока

Неки од подразумеваних блокова долазе са неколико варијација стилова. Један овакав блок је pullquote. Помоћу registerBlockStyle можемо врло лако додати варијације стилова за сваки подразумевани блок.

Назив (вредност параметра name) нашег стила ће бити употребљен за генерисање нове CSS класе помоћу које можемо стилизовати варијацију и у уређивачу и на фронтенду. Модел за класу је:

.is-style-{НАЗИВ-СТИЛА}

Филтери

Javascript филтери у Вордпресу се понашају веома слично PHP филтерима. Имају три параметра: назив филтера, namespace и callback функцију у којој смо дефинисали шта и како желимо да променимо.

Филтер blocks.registerBlockType

Овај филтер нам даје приступ подешавањима блока што смо ми искористили да омогућимо системске класе за блокове листе, параграфа и заглавља, који су једини подразумевани блокови без ове класе: .wp-block-{ИМЕ-БЛОКА}.

Филтер blocks.getBlockDefaultClassName

Овај филтер нам даје директан приступ класама подразумеваних блокова где можемо додати наше прилагођене.

wp.i18n

Заједно са новим уређивачем, Вордпрес је добио и i18n подршку за Javascript. Ово нам омогућава да у Javascript датотекама користимо исте функције за интернационализацију које користимо и у PHP датотекама. Примена је врло једноставна, на почетку Javascript датотеке треба дефинисати функције које ће i18n да претражује.

const { __, _x, _n, _nx } = wp.i18n;

Након овога, помоћу једне команде Вордпресовог алата за командну линију, WP CLI, се једноставно генерише .pot датотека за дати директоријум.

wp i18n make-pot <ПУТАЊА-ДО-ДИРЕКТОРИЈУМА>

Комплетан код са радионице се може преузети са званичног налога Вордпрес Србија заједнице на Github-u.

У следећем термину прелазимо на могућности прилагођавача (Customizer) које можемо користити у теми.

Радионице су бесплатне али је потребно пријавити се на Meetup групи Вордпрес Србија заједнице.

Нови Сад – 10 Радионица за израду Вордпрес тема, 16 фебруар 2019

Десета радионица за израду Вордпрес тема је одржана у суботу, 16 фебруара у новосадском Стартит Центру. Бавили смо се подршком теме за нови уређивач, познат под називом Гутенберг.

Учитавање стилова и скрипти

За учитавање скрипти и стилова за блокове и њихов уређивач користимо исте функције као и до сада, wp_enqueue_scripts и wp_enqueue_styles. Разликују се једино имена копчи за које везујемо позиве.

еnqueue_block_assets – Примењује се и на уређивач блокова и на фронтенд. Корисно је када желимо да нам блокови изгледју и понашају се исто и у уређивачу и на фронтенду.  

enqueue_block_editor_assets – Примењује се само на уређивач те се најчешће користи у додацима.

Подршка теме

Нови уређивач је донео низ нових могућности које тема може да подржава.

add_theme_support( ‘align-wide’ );

Широко поравнање подразумева две нове могућности, широко поравнање и пуну ширину. У самом уређивачу се примењује одмах након додавања подршке док је за фронтенд потребан додатни CSS како би се нове ширине примениле.

add_theme_support( ‘wp-block-styles’ );

Сви блокови долазе са предефинисаним стиловима у уређивачу. Уколико желимо да применимо ове стилове и на фронтенд, то можемо урадити укључивањем подршке за стилове блокова. У зависности од теме и њених већ постојећих стилова, неопходно је додати мање или више CSS-а у стилове теме како би се сви стилови из уређивача применили и на фронтенд.

add_theme_support( ‘editor-font-sizes’ );

Уређивач дозвољава корисницима да мењају величину фонта. Осим неколико предефинисаних величина, корисници могу дефинисати било коју величину за текст који уносе. Ове предефинисане величине је могуће променити помоћу подршке за величину фонта.

За савку нову величину ће се генерисати нова класа по следећем моделу:

.has-{ВЕЛИЧИНА}-font-size  

При чему је ВЕЛИЧИНА заправо slug који смо доделили прилагођеној величини. Подразумеване величине за које класе већ постоје су: small, regular, medium, large, huge и larger.

add_theme_support( ‘disable-custom-font-sizes’ );

Уколико желимо да онемогућимо коришћење било које величине осим дефинисаних, можемо да укључимо подршку за онемогућавање прилагођених величина.

add_theme_support( ‘responsive-embeds’ );

Подршка за пуну ширину угњежђивања на свим уређајима, при чему су очуване пропорције на свакој величини екрана.

add_theme_support( ‘editor-color-palette’ );

Као и величине фонта, уређивач има предефинисане палете боја које се могу применити као боја текста и боја позадине за поједине елементе. Такође, CSS класе се генеришу по истом принципу као и за величину фонта.  

.has-{БОЈА}-color

.has-{БОЈА}-background-color

Предефинисане боје су: pale-pink, vivid-red, luminous-vivid-orange, luminous-vivid-amber, light-green-cyan, vivid-green-cyan, pale-cyan-blue, vivid-cyan-blue, very-light-gray, cyan-bluish-gray и very-dark-gray, а осим ових боја такође је могуће користити било коју боју.

Подразумеване боје је могуће заменити прилагођеном палетом путем подршке теме.

add_theme_support( ‘disable-custom-colors’ );

Такође, уколико желимо да онемогућимо коришћење боја које нису предефинисане, можемо то да урадимо укључивањем подршке теме.


Комплетан код са радионице се може преузети са званичног налога Вордпрес Србија заједнице на Github-u.

У следећем термину настављамо са уређивачем: правимо шаблоне блокова и мењамо појединости предефинисаних блокова уз помоћ доступних филтера.

Радионице су бесплатне али је потребно пријавити се на Meetup групи Вордпрес Србија заједнице.

Вордпрес 5.1

Вордпрес 5.1 је доступан.

Након Вордпреса 5.0—великог издања које је донело нови уређивач блокова—5.1 се усредсређује на сређивање, посебно побољшавајући општи учинак уређивача. Додатно, ово издање крчи пут за бољи, бржи и безбеднији Вордпрес са неким основним алаткама за управнике веб места и градитеље.

Са безбедношћу и брзином на уму, ово издање доноси прве Вордпресове особине за здравље веб места. Вордпрес ће почети да приказује напомене управницима веб места који покрећу давно застарела издања PHP-а, програмског језика који покреће Вордпрес.

Приликом постављања додатака, Вордпресове особине за здравље веб места ће проверити да ли додатак захтева издање PHP-а које није усклађено са вашим веб местом. Уколико је тако, Вордпрес ће вас спречити од постављања додатка.

Представљен у Вордпресу 5.0, нови уређивач блокова наставља да се побољшава. Најважније, Вордпрес 5.1 укључује побољшања учинка у уређивачу. Уређивач би требало да буде бржи за учитавање и куцање би требало да буде глаткије. Ипак, очекујте више побољшања учинка у наредним издањима.

Вордпрес 5.1 доноси бројна друга побољшања „испод хаубе“ као и побољшања за градитеље.

Вордпрес окупљање у Вршцу #WPVŠ 02/19

Добро дошли нa вршачко Вордпрес окупљање!

Фебруарско дружење угостиће двојицу креатора. Један је аутор Вордпрес тема и увешће вас у тајне не само прављења тема, већ и њихове дистрибуције, а други је творац Webiz конференције. Од њега ћете сазнати зашто је заједница толико битна за напредак сваког од нас.

Драган Тодоровић је веб девелопер са вишегодишњим искуством у развијању премиjум Вордпрес и Џумла тема. Поред тога што је основао Themezly.com и YоuJооmlа.com, Драган је lead designer и девелопер за ове premium themes клубове који данас броје преко 110.000 чланова. Његово искуство у свету веб девелопмента ће вам сигурно помоћи у развоју сопствених сајтова.

Драган ће причати о развоју Creatus Вордпрес теме и како вам она може помоћи у развоју Вордпрес веб страница. Такође, сазнаћете шта су multipourpose теме и како их можете искористити да што пре завршите ваше Вордпрес пројекте.

Владимир Ковач је по струци економиста и специјалиста пројектног менаџмента. У пракси, ентузијаста, дигитални еванђелиста, локал патриота, и на крају, али свакако не најмање важно, вршачки зет. Као маркетар је 2010. упловио у свет дигитала, док на пројекту Webiz ради од 2013. године. Само две године касније, Webiz од пројекта прераста у животну пасију, и постаје посао 24/7. Током последњих пет година Webiz је постао најпрепознатљивији бренд када су у питању конференције и пословне едукације на тему IT-а, дигиталног маркетинга и пословне примене интернета.

Како би додатно утицао на развој ИT-а у родном граду Зрењанину, са пријатељима оснива невладину организацију Wеbit, са циљем промовисања интернет културе и унапређивања ИЦТ сектора. Крајем 2016. године изабран је за Председника Извршног одбора новооснованог Зрењанинског ИЦТ кластера. И данас као члан Извршног одбора зрењанинског ИЦТ кластера активно учествује у развоју Зрењанина као ИT-фирендy средине. Добитник престижне награде Капетан Миша Анастасијевић за афирмацију ИКТ индустрије у Зрењанину.

У свом предавању, кроз причу о Wеbiz-у, пренеће вам искуства из Зрењанина о значају грађења ИT заједнице, мотивацији и анимирању младих у једној инертној равничарској средини, и резултатима који су уследили непуних седам година након прве Wебиз конференције

Окупљање је заказано за петак, 22. фебруар, у 19 часова у Стартит Центру Вршац, који се налази у Centru Millennium, Омладински трг 17.
Присуство предавањима је бесплатно.

Нови Сад – 9 Радионица за израду Вордпрес тема, 02 фебруар 2019

Девета радионица за израду Вордпрес тема је одржана у суботу, 02 фебруара у новосадском Стартит Центру. Упознали смо се са функцијама за интернационализацију и алатима за локализацију теме.

Једноставни текст

Када у кôду имамо једноставан текст без динамичких вредности или елемената специфичних за одређени језик (као што су бројеви, датум и време), можемо користити неколико функција за интернационализацију, у зависности од места на коме се текст налази и коју улогу игра.

__(), _e() – најједноставнија функција која враћа, одн. принта текст и замењује га локализованим преводом, уколико постоји.  

esc_html__(), esc_html_e() – преводи исто као и горе неведене функције, и врши escaping за HTML.

esc_attr__(), esc_attr_e() – преводи исто као и горе неведене функције, и врши escaping за атрибуте.

Контекст

Функције за додавање контекста не праве никакву разлику у самом процесу и функционалности локализације али су од великог значаја за преводиоца.

Конкретно у енглеском језику постоје речи које се исто пишу као глагол и као именица али имају потпуно другачије значење: post (именица: чланак; глагол: послати), book (именица: књига; глагол: резервисати) итд.

У оваквим случајевима контекст представља огромну помоћ да се, без потребе гледања у кôд, израз прецизно преведе.

_x(), _ex() – функција са контекстом која враћа, одн. принта текст и замењује га локализованим преводом, уколико постоји.

esc_html_x(), esc_attr_x() – преводе исто као и горе неведене функције, и врше escaping за HTML, одн атрибуте.

Једнина и множина

Функције за разликовање једнине и множине у зависности од прослеђеног броја такође могу бити са или без контекста.

Помоћу ових функција алати за локализацију препознају да треба да примењују адекватан формат множине за дати локал.

_n(), _nx() – у зависности од прослеђеног броја враћа стринг за једнину или за множину.

Формат броја

Функција за форматирање броја користи глобалну варијаблу $wp_locale, како би број био правилно форматиран за дати локал (сепаратор за хиљаде и децимална тачка).

Нпр.

САД – 1,024.00

РС – 1.024,00

number_format_i18n() – не ставља се у функцију за интернационализацију али се враћена врдност може користити за приказ броја у склопу локализованог стринга.

Најчешћи пример у Вордпресу се може наћи у шаблону за коментаре (приказ броја коментара) где имамо примену функције за форматирање броја као и за препознавање једнине и множине:

printf(
	/* translators: 1: number of comments, 2: post title */
	_nx(
		'%1$s Reply to %2$s',
		'%1$s Replies to %2$s',
		get_comments_number(),
		'comments title',
		'radionica'
	),
	number_format_i18n( get_comments_number() ),
	get_the_title()
);

Формат датума и времена

Као и код форматирања броја, функција за локализовање датума и времена користи глобалну варијаблу $wp_locale у којој су, између осталог, сачувани називи месеци и дана у недељи за сваки локал.

date_i18n() – такође се користи ван функције за интернационализацију али може да проследи своју вредност једној таквој функцији.

Језичка целина

Приликом писања кôда и припреме за интернационализацију, веома је важно имати у виду да различити локали имају различиту језичку синтаксу и користи различит редослед речи у реченици за исказивање исте садржине.

Због овога је важно задржати логичну језичку целину у истом стрингу. Ово није проблем уколико не постоји динамичка вредност унутар целине, међутим, у ситуацијама када се динамичке вредности нађу унутар целине девелопери понекад прибегавају “лакшем” решењу и исцепкају целину на мање делове. Ово треба по сваку цену избегавати.

Како би се сачувала целина најчешће се користе следеће PHP функције: sprintf() и printf().

Алати за локализацију

Од бројних алата за локализацију који су данас доступни, у радионици смо се упознали са два: Poedit и Loco додатак.

Poedit је самостални алат и захтева добру припрему пре самог генерисања стрингова за превод. Уколико не знате које све функције и у ком формату треба да буду кориштене као кључне речи за претагу кôда, јако тешко ћете постићи потпуну локализацију.

У подешавањима кључне речи изгледају овако (све функције за интернационализацију које смо користили):

"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n"

Loco је додатак за Вордпрес који служи искључиво за локализацију. За разлику од осталих додатака, он посетиоцима веб места не даје могућност пребацивања садржаја на све доступне локале. Он приказује само онај локал који је изабран у контролној табли.

Међутим, оно што овај додатака издваја од осталих је могућност генерисања свих стрингова за превод и превођења директно из контролне табле. За овај додатак је довољно да само изаберете локал и он ће сам прегледати све функције.

Осим ових, постоје и напредни алати помоћу којих се могу генерисати датотеке за локализацију. Поменућемо два:

WP-CLI

wp i18n make-pot path/to/your-theme-directory

grunt-wp-i18n

Транслитерација

Српски језик је један од ретких који користи два писма, ћирилицу и латиницу. Како се транслитерација врши само из ћирилице у латиницу (обрнути смер даје грешке у многим ситуацијама), иницијални превод се врши на ћирилици.

Затим је транслитерацију могуће остварити путем додатака, ми смо користили SrbTransLatin али он није једини додатак који обавња ову функцију.

Датотеке

Постоје три врсте датотека које учествују у процесу локализације Вордпреса.

POT (Portable Object Template)

.pot – Генерише се из gettext функција у кôду. Ова датотека која садржи све стрингове за превођење, пронађене у теми, додатку или било којој претходно изабраној фасцикли. Стрингови су најчешће на енглеском језику.

Стринг из .pot датотеке:

#. 1: number of comments, 2: post title
#: template-localisation.php:182
#, php-format
msgctxt "comments title"
msgid "%1$s Reply to %2$s"
msgid_plural "%1$s Replies to %2$s"
msgstr[0] ""
msgstr[1] ""

PO (Portable Object)

.po – Генерише се из .pot датотеке и ова датотека која је њена скоро идентична копија. Разлика је у дефинисању специфичности локала: назив језика, форма множине и сл. У ову датотеку се, ручно или путем неког алата, уписује превод на жељени локал.

Горе наведени стринг али из .po датотеке за српски локал:

#. 1: number of comments, 2: post title
#: template-localisation.php:182
#, php-format
msgctxt "comments title"
msgid "%1$s Reply to %2$s"
msgid_plural "%1$s Replies to %2$s"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""

MO (Machine Object)

.mo – Генерише се из .po датотеке, потпуно је нечитљива људима и ово је заправо датотека коју Ворпрес чита и користи за локализацију. За ову датотеку је јако важно како је названа и њено име ће да зависи од фасцикле у којој се налази.

Локација и име .mo датотеке

Када се у контролној табли Вордпреса промени језик, истог тренутка се у фасцикли wp-content генерише languages фасцикла. Ту су све датотеке за локализацију свих тема и додатака пронађених у инсталацији Вордпреса а које је Вордпрес преузео са translate.wordpress.org. Теме и додаци овде имају своје засебне фасцикле а именовање датотека се врши према шеми:

ИМЕ-ТЕМЕ-ЛОКАЛ.mo (radionica-sr_RS.mo, radionica-sr_RS.po)

Уколико датотеке за локализацију одређене теме или додатка не постоје на translate.wordpress.org, Вордпрес ће покушати да их пронађе у корену теме, одн. додатка. У ово случају се изоставља назив теме/додатка из назива датотеке и остаје само ознака за локал (sr_RS.mo, sr_RS.po). Да бисмо могли на овај начин да користимо датотеке за локализацију, неопходно је омогућити локализацију у кôду.

load_theme_textdomain( 'radionica' );

Ради веће прегледности и боље организације, могуће је померити датотеке за локализацију у засебну фасциклу, најчешће languages. Да би ово функционисало неопходно је додати нову локацију у претходну функцију. Датотеке и овде задржавају само ознаку за локал у свом називу.

load_theme_textdomain( 'radionica', get_theme_file_path( '/languages' ) );

Комплетан код са радионице се може преузети са званичног налога Вордпрес Србија заједнице на Github-u.

У следећем термину се бавимо подршком теме за нови уређивач, познат под називом Гутенберг.

Радионице су бесплатне али је потребно пријавити се на Meetup групи Вордпрес Србија заједнице.

Прво Вордпрес окупљање у Суботици – #WPSU

Након прилично успешне 2018. настављамо ширење наше заједнице, па окупљања Вордпрес Србије најзад доводимо на север наше земље – 12. фебруара ћемо се по први пут окупити у прелепој Суботици.

У феноменалном простору Стартит центра имаћете прилику да чујете два сјајна предавања


„Од freelancinga до предузетништва“ – Слободан Мирић

Предавање је синтеза једног пута кроз креативну индустрију од почетка као фриленсера до преласка на агенцијски облик организовања, као и пројектно финансирање, где је вртоглави скок кренуо употребом Вордпреса. Тежиште ће бити на могућностима брзог уласка у IT индустрију, како што пре бити употребљив и кренути конкретно радити, као и шта радити. Слободан ће нам пренети конкретне идеје и интерне пројекте на којима ради и које је могуће остварити уз помоћ Вордпреса и мало маркетиншког знања.

Слободан је веб девелопер, који је радио на многим домаћим и страним пројектима и компанијама. Последње 2 године ради као предузетник, власник агенције за израду веб сајтова и апликација. Поред фронт-енд програмирања и Вордпреса, заљубљеник је и у PHP. Поборник је идеје “Never stop learning” коју преноси на друге.


„WordPress 5.0“ – Милан Ивановић

Најновија верзија Вордпреса доноси прегршт новина за кориснике, а међу највећим је управо уређивач. Причамо како најбрже покренути Вордпрес инсталацију на вашем рачунару, пролазимо кроз верзију 5 и причамо зашто је јако битно ажурирати све на најновија издања.

Милан живи за Вордпрес, организатор је WordCamp Europe и WCBGD, први човек Вордпрес Србије, а у слободно време (потпуно неочекивано) држи предавања о Вордпресу и скупља (готово изненађујуће) мајице са разноразних Вордпрес догађаја.


Окупљање ће се одржати 12. фебруара са почетком у 18 часова у Стартит центру Суботица – Kорзо 1 (2. спрат). Присуство предавањима је бесплатно, али је због ограниченог броја места пријављивање обавезно на следећем линку.

Видимо се!

Нови Сад – 8 Радионица за израду Вордпрес тема, 19 јануар 2019

Прва радионица за израду Вордпрес тема у 2019 години је одржана у суботу, 19 јануара у новосадском Стартит Центру. У овом термину смо се посветили писању сигурнијег кôда помоћу тзв. escaping функција.

HTML

За једноставне стрингове који садрже само текст се користе esc_html() или esc_textarea(). PHP функција која овде обавља велики део филтрирања је htmlspecialchars().

Уколико очекујемо да стринг садржи и HTML ознаке онда можемо користити wp_kses_post() или wp_kses(). На овај начин ћемо обезбедити основно обликовање без бојазни да ћемо дозволити оне ознаке које могу пореметити распоред елемената на страници или чак направити неку већу штету.

Уколико не знамо шта можемо очекивати у стрингу а желимо да омогућимо обликовање као код садржаја или одломка чланка, можемо користити филтере за садржај, the_content, одн. oдломак, the_excerpt. Одломак ће вратити обликовање као и wp_kses_post() док садржај додаје и могућност правилног обликовања кратких кôдова (shortcode).

Атрибути

За филтрирање атрибута постоји посебна функција, ecs_attr(), која обавља потпуно исту обраду стринга као и esc_html().

URL

Уколико није дефинисан протокол, esc_url() ће га додати у облику “http://” на било који стринг који му је прослеђен. Подразумевани протоколи се могу пронаћи у wp_allowed_protocols(), где се, такође, могу додати и нови путем достпуног филтера.

Веома корисна функција за заштиту од нежељене поште је antispambot(). Она претвара сваки карактер е-поште у HTML ентитет и тиме сакрива од ботова присуство е-поште на страници.

Javascript

Пре свега је важно избегавати тзв “inline Javascript” колико год је то могуће. Уколико, ипак, постоји потреба за оваквом употребом скрипте, онда се препоручује филтрирање помоћу wp_json_encode() у комбинацији са esc_attr(), што се показало као много сигурнија опција од предвиђене esc_js() функције.

Уколико је потребно Javascript датотеци проследити одређене податке из PHP-a, може се користити функција wp_localize_script(). Иако је предвиђена да прослеђује стрингове спремне за локализацију, ова функција се у пракси користи и за прослеђивање свих осталих типова вредности (бројева, булеана итд) који се могу динамички користити у Javascript кôду.


Комплетан код са радионице се може преузети са званичног налога Вордпрес Србија заједнице на Github-u.

У следећем термину ћемо се упознати са функцијама за интернационализацију теме, припремићемо целу тему за локализацију и, уз помоћ Поедита (софтвера за превођење), направити датотеке помоћу којих се врши превод.

Радионице су бесплатне али је потребно пријавити се на Meetup групи Вордпрес Србија заједнице.