Нови Сад – 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 групи Вордпрес Србија заједнице.

Нови Сад – 7 Радионица за израду Вордпрес тема, 22 децембар 2018

Последња радионица за израду Вордпрес тема у 2018 години је одржана у суботу, 22 децембра у новосадском Стартит Центру. У овом термину смо се посветили бочној траци, виджетима и различитим приказима архива.

Бочна трака

Као носиоца различитих виджета, бочну траку смо регистровали и додали у sidebar.php и позвали у index.php путем get_sidebar() функције. Како бисмо избегли празан HTML markup, као и празан простор на страници када ниједан виджет није додат у бочну траку, употребили смо is_active_sidebar() функцију за проверу постојања виджета и body_class копчу да додамо прилагођену класу за <body> ознаку.

Архиве

Вордпрес има велики потенцијал у пролагођавању архива различитим потребама веб места. Ми смо се посветили специфичностима неких од њих.

archives.php

Односи се на приказ свих архива и, уколико постоји у теми, преузима ову улогу од index.php шаблона. Приказ назива и описа архиве је поједностављен функцијама the_archive_title() и the_archive_description().

Уколико подразумевани назив и опис не одговарају потребама веб места, или не постоје и не могу се додати из контролне табле (као што је случај са описом архива датума), промена је веома једноставна употребом филтер копчи get_the_archive_title и get_the_archive_description.

date.php

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

Уколико постоји потреба, могуће је раздвојити архиве датума на year.php, month.php и day.php ради даљег прилагођавања.

author.php

Односи се на архиве аутора и преузима улогу шаблона за архиве аутора од archives.php или index.php шаблона. Подразумевано су доступни додатни подаци аутора (аватар, биографија, сва поља из профила) а могуће је додатно персонализовати архиву употребом прилагођених изборника и сл.

search.php

Посебан вид архиве који приказује резултате претраге. Ово је згодно место за приказ формулара за претрагу путем get_search_form(), а такође су нам доступне и кључне речи претраге у функцији get_search_query().

Уколико је неопходно изменити HTML самог формулара за претрагу, то је могуће урадити у посебно делу шаблона searchform.php.

Bug

Обзиром да подразумевена претрага Вордпреса претражује кључне речи у пољима за наслов, садржај и одломак чланка и странице, нама се на архиви резултата претраге појавила PHP нотификација када је одломак празан у чланку. Ово је узроковано кодом из нашег прилагођеног изборника (лоциран у inc/class-custom-walker-nav-menu.php, линија 138). Ову линију смо померили унутар провере постојања одломка, на линију 155, и тиме је нотификација успешно уклоњена. Ову промену можете видети овде.


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

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

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