Експортиране на заглавия, съдържащи HTML, от WordPress

от Гонзо
лиценз CC BY-NC-SA

WordPress позволява да се въвежда HTML на много места, на които не бихте си помислили да го направите. Например заглавията на публикациите – например за да откроите някои думи, да маркирате правилно абревиатура или по друга причина. Например повечето статии в „Как се пише“ съдържат HTML, за да откроят думите, за които се отнася статията. Обаче ако ви се наложи да експортирате това съдържание, ще откриете, че заглавията са изчистени от всякакъв HTML и форматирането е загубено. Така стандартният експорт на WordPress става безполезен за пазене на архив на съдържанието или за прехвърлянето му на друга инсталация. Обаче има лесно решение.

Ако поровите в кода на функцията export_wp(), ще видите две интересни неща:

  1. Там е дефинирана функцията wxr_cdata(), която затваря подадения стринг в CDATA блок.
  2. Заглавията на публикацитиите се филтрита през филтъра the_title_rss.

Значи за да можем да експортираме заглавията заедно с HTML-а, трябва да махнем от този филтър функцията, която чисти HTML-а (strip_tags естествено, както и esc_html()) и да добавим wxr_cdata(). Всъщност това второ няма да стане, защото функцията е дефинирана само в контекста на export_wp(), така че ще трябва просто да я клонирате.

function htr_cdata_post_title ( $title ) {
	$title = '<![CDATA[' . $title . ']]>';
  return $title;
}
add_filter( 'the_title_rss', 'htr_cdata_post_title' );

remove_filter( 'the_title_rss', 'strip_tags' );
remove_filter( 'the_title_rss', 'esc_html' );

Това е всичко, при… опа, това беше от друго шоу.

Нова къща, нов късмет

от Ясен Праматаров
лиценз CC BY

Вчера бяхме на детски рожден ден и в разговорите все ме теглеше към една и съща тема – нова и важна за мен и Краси, но предполагам вече станала леко досадна за околните. Изведнъж ми просветна, че много малко хора знаят за голямата промяна вкъщи – даже може би хората, на които сме казали, се броят на пръсти. Та затова се поправям сега. :)

Вече втори месец сме в къща с двор.

Огромна промяна, която пожелавам на всички приятели, които като нас са изкушени от такова бягство от стреса на града. По адрес пак “София”, но иначе – не съвсем. Да, всички обичаме града, и аз съм градско чедо, но “градската” София днес все по-малко е за хора над 30 години и все по-малко е за малки деца.

Преди около две седмици успяхме да приключим с пренасянето – първо аз направих сигурно над десет курса с Дракончо (о, и за това трябва да ви разказвам, макар че вече колата за дълги пътувания е една година при нас) и с Рошко и накрая наехме камион за мебелите и по-тежките неща. Не можах да повярвам колко много, много и още по-много неща може да събере семейство с деца за 5 години под наем. Уж апартаментът на “Иван Асен” е мъничък сравнително, две стаи и хол с бокс, даже нямахме достъп до мазе или таван, а толкова много торби и кашони с книги, дрехи, рисунки, играчки и какво ли още не… Да кажеш, че всичко е нещо ценно или важно – не, просто се е “събрало” и “застояло” с годините. Трябва да се прави пролетно почистване, не може така – и напролет, и наесен. :)

Сега сме с двор, с мазе и таван, че и в двора с безкрайно много работа, но пък и с неща като компост и беседка, примерно. Светко полива лехата с домати (цъфнаха, но още не са вързали, късно ги посадихме), а Оги мете терасата и май повечко скита из махалата със съседчето Алекс, яде къпини и рита топка на улицата пред нас. И двамата с Краси имахме първите си бойни дворни рани – аз от ръждив сърп (биха ми против тетанус, няма грижи, тук има поликлиника със спешен център), а тя от битката с грамадни тръни и храсти. Тръните са почистени, но Краси е с превързан крак.

Имаме ужасно много работа по привеждане на всичко в ред, ремонтиране и обживяване, макар че къщата я взехме във вид, подходящ директно за нанасяне. Да, но се оказа, че в къща всяко нещо трябва да се пренареди, ремонтира, почисти и тъй нататък, а в същото време дворът постоянно подлежи на естествен процес на обрастване, подивяване и залесяване. Нищо лошо, нищо нередно, просто май леко се оправдавам защо още никого не сме посрещнали тук…

Имахме вече първите си семейни вечери в беседката с печени неща на жар и вече закусваме на терасата. Съседското куче (едно от тях, тук май всяка къща има поне по едно, ние все още удържаме фронта) идва и разучава всяка промяна в двора, Рая се запозна с мухите като вид и не ги хареса, сега всяко насекомо – летящо, пълзящо, каквото и да е, се нарича “нуха” и периодично се чува отнякъде пронизващ вик “нухи-и-и-и, има нухи-и-и-и”, който мобилизира цялото семейство да гони мухи, бръмбари, мравки, паячета… или просто да обяснява, че те са много добрички и че всъщност точно това е “муха-бебе” и е “много мила” – този номер засега минава и отново има мир и тишина, поне за известно време.

Аз работя под земята, както вече се похвалих. Предстои окабеляване, защото безжично е бавно за видео конференции. Иначе доставчикът, местна лан-ка, е по-бърз, но пък вече няколко пъти спира за по няколко часа. Това за хората явно не е проблем, но аз го ползвам за работа, та трябва да измисля някакъв резервен достъп. Нещо все не ми харесваха плановете на мобилните оператори, но за бекъп нещо минимално може би не е зле. Сега ползвам моя от телефона, ако е много спешно, но той е 500 MB на месец, което става за SSH, но е нищо, ако се наложи видео.

Имам и други технически задачки за решаване, но за мен това са интересни занимания. Например ще е идеално поле за развихряне на всякакви идеи за автоматизация и принтиране, ще влязат в употреба ардуинотата и датчиците, които вече остаряха две-три години в кутии за обувки. Трябва да измисля и схема за видеонаблюдение, дали готов DVR или нещо със ZoneMinder или Shinobi (между другото – приемам мнения и съвети). В гаража пък се надявам да започна нещо по темата електромобилност, макар че това може би ще почака.

Linux ъндърграунд (буквално)

от Ясен Праматаров
лиценз CC BY

Проблем: в квартала се чува сръбско. Не силно, но постоянно.

Първи опит: някоя от метъл станциите ми в Jango, на макс. Неуспешно – хем не мога да работя на музика (защото я слушам), хем не влияе на основния проблем.

Решение: офис в мазето. \m/ \m/

Умерено прохладно, спокойно, тихо и защитено и в същото време… е под земята-а-а-а, ха-ха-ха, разкази от криптата-а-а!

Нови попълнения и напуснали за сезон 2017/18

от Куинс Парк България
лиценз CC BY-SA

Няколко дни преди старта на сезон 2017/18 с турнира за Купата на Лигата „Куинс Парк“ обяви официално играчите, които преподписват за новата кампания, както и няколко от новите попълнения. В следващите дни се очаква да бъдат официализирани и картотеките на още няколко от очакваните играчи, които да допълнят групата на първия тим на Ангъс Макфърсън.

Ето кои са потвърдените имена до момента:

Преподписали: Уили Мюър, Шон Бърнс, Рос Милън, Скот Гибсън, Адам Къминс, Брайън Уортън, Дейвид Галт, Антон Брейди, Конър Маквей, Били Мортимър, Юън Макфърсън.

Нови:  Кевин Грийн („Роб Рой“), Кристофър Дъф („Роб Рой“), Люк Уилън („Роб Рой“), Дейвид Грийн („Килбърни Лейдсайд“).

Напуснали: Райън Макгийвър („Брихин Сити“), Лиъм Браун („Мадъруел“), Джйеми Маккърнън („Албиън Роувърс“), Гавин Митчъл.

150 години „Куинс Парк“ – 150 години от историята на футбола

от Куинс Парк България
лиценз CC BY-SA

Днес се навършват 150 години от основаването на „Куинс Парк“ – най-старият шотландски футболен клуб. Той носи живата история не само на шотландския, но и на световния футбол, определяйки и насочвайки неговото развитие през годините. Тридневното официално честване в Глазгоу започна още в петък и достига своята кулминация днес, като се провеждат редица събития на различни нива – спортни, социални, културни.

„Куинс Парк“ е създаден на 9 юли 1867 година, когато тринадесет човека се събират в Еглинтън Теръс на Виктория Роуд в Глазгоу с цел да създадат футболен клуб за взаимно развлечение и забавление. Официалният първи протокол гласи: „Тази вечер в осем и половина група джентълмени се срещнаха на Еглинтън Теръс, Глазгоу с цел формирането на „футболен клуб“[…] Първо. Клубът ще се нарича Футболен клуб Куинс Парк…“

През всичките тези 150 години от своето съществуване „Куинс Парк“ неотменно следва основният принцип, върху който са положени основите му – Ludere causa ludendi („Да играеш заради играта“). Дори и днес когато комерсализацията във футбола доминира в цялата игра, шотландският клуб успява с цената на множество жертви да запази своята автентичност и идентичност. Неизменно подкрепян навсякъде от своите сърцати и верни фенове, привличайки също така и привърженици от всички континенти. Популярността му се разраства, макар да не получава медийното време и внимание, отделяно на мултимилионните елитни клубове. Значимостта на „Куинс Парк“ се потвърждава и чрез множеството официални приветствия от различните национални и международни институции по случай този уникален клубен празник.

Честита 150-та годишнина на всички в и около „Куинс Парк“!
C’mon the Spiders!

Установяване на правилен локал на формите, създадени с Contact Form 7

от Гонзо
лиценз CC BY-NC-SA

Наскоро ми се наложи да правя сайт с WordPress на Иврит. За незапознатите с особеностите на близкоизточните езици ще напомня, че се пишат от дясно на ляво и нямат главни букви. Освен това чуждите думи, изписани на латиница (или друга писменост, която се пише от ляво на дясно), както и числа, изписани с арабски цифри, се пишат както си трябва – от ляво на дясно. WordPress поддържа достатъчно добре всякакви писмености и езици, правилната локализация също е важно условие за одобряване на темите в wordpress.org. Аз обаче се сблъсках с един проблем на разширението Contact Form 7, който не е очевиден, когато сайтът е на език, изписван от ляво на дясно. В случая с Иврит обаче, въпреки че всичко останало по сайт сменяше посоката на подравняване на текста и елементите, полетата във формата оставаха подравнени вляво. Бърз преглед на генерирания HTML показа наличието на атрибути lang и dir на елемента, който съдържа формата, за манипулиране на които атрибути няма настройка. Проблемът е, че в моя случай тези атрибути имаха стойности като за английски локал, което не само, че обръщаше подравняването на текста, но би имало неприятни последици и за потребителите на екранни четци – ако екранният четец превключи на друг език, това би било най-малкото доста объркващо.

След кратко търсене в сайта на разширението и в Гугъл намерих въпрос, зададен от потребител, използващ Contact Form 7 в многоезичен сайт на английски и арабски. Неговият проблем беше подобен на моя – формите на арабски си оставаха подравнени вляво. Отговорът за мен изглежда доста нелепо: локала на формата се установява на базата на локала на администрацията по време на създаване на формата и се наследява при клониране на формата. При условие, че често в многоезичните (а и не само) сайтове администраторите на сайта използват локал, различен от този на публичния сайт, и като имаме предвид, че новите версии на WordPress дават възможност в администрацията потребителите да избират локал, различен от основния локал на сайта, това поведение на Contact Form 7 има сериозни последствия върху достъпността на сайта. Проблемът може да се отрази не само на потребителите, използващи екранни четци, но и на всички останали – въпреки, че разширението блокира валидирането на формите в браузъра, това може да бъде отменено от други разширения, и тогава съобщенията на браузъра ще са на езика, установен от локала на формата, а не на езика на сайта.

Понеже не намерих конкретно решение на проблема, освен да си сменям езика в администрацията – това не беше решение в случая – се зарових в кода на разширението. И намерих точно каквото ми трябваше – кука за действие, чрез което могат да се манипулират свойствата на обекта, отговарящ за генерирането на формата, точно преди превръщането ѝ в HTML. Ето и кодът, който написах:

function gonzo_fix_cf7_locale( $cf7 ) {
  $cf7->set_locale( get_locale() );
}
add_action( 'wpcf7_contact_form', 'gonzo_fix_cf7_locale' );

Това, което правя е просто – пренаписвам локала на формата с основния локал на сайта. Решението е универсално и ще работи винаги, когато формата е на същия език като сайта.

WannaCry, Windows?

от Ясен Праматаров
лиценз CC BY

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

Евровидение за овце

от Ясен Праматаров
лиценз CC BY

Май само аз не се вълнувам от “евровизия”. Хлъц и рев за някакво представление, в което никога не е имало достатъчно музика, но пък е “шоу” и прави някои хора “горди”. Подобно на световното по футбол – дъвка за народонаселението.

А като видя онази Армутлиева, която заедно с други корифеи на “авторските права” и “издатели” убиха навремето зараждащата се местна сцена, направо ми се повдига.

Намерете си по-смислено занимание и по-важни неща за впечатляване, а ако наистина искате музика – слушайте и ходете на концерти на местни неизвестни групи. Музика има, а това с телевизионното шоу е нещо друго.

Голов трилър в Еърдри за финал на сезона в Лига 1

от Куинс Парк България
лиценз CC BY-SA

Голът на Орси не стигна за победа в Еърдри. Сн. Queen’s Park Official Website

В един голов трилър на „Екселсиор“ отборът на „Куинс Парк“ не успя да победи „Еърдри“. Мачът беше своеобразен финал за място в плейофите за Чемпиъншип, като и двата тима имаха своите шансове при ред други обстоятелства, за да попаднат там. В крайна сметка домакините надхитриха своя съперник и спечелиха важния двубой с 3:2.

„Куинс Парк“ играха открито, създадоха доста положения в нападение и първи откриха резултата чрез Дарио Заната в 15 мин. Едва към края на полувремето „Еърдри“ намериха начин да противодействат и 41 минута изравниха след гол на Райън. Минута след почивката отново той покачи на 2:1, възползвайки се от ниската концентрация в защитата на „паяците“ в този момент. „Куинс“ обаче се хвърли напред и след 7 минути Калвин Орси възстанови равенството. Всичко обаче пропадна светкавично бързо, след като в ответната атака домакините отбелязаха 3-я си гол в мача. Макфърсън опита някои промени, но гол така и не падна докрая, като в заключителните секунди Брейди пропусна добра възможност за изравняване.

В крайна сметка „Еърдри“ подпечата мястото си в плейофите, а за „Куинс Парк“ остава утешението за много силното си представяне в Лига 1 и финиша на доброто 6-о място в крайното класиране, в своята юбилейна 150-а годишнина.

„Еърдриониънс“ – „Куинс Парк“ 3–2
0:1 Заната – 15′, 1:1 Райън – 41′, 2:1 Райън – 46′, 2:2 Орси – 53′, 3:2 Ръсел – 54′

„Куинс Парк“: 1. Мюър, 2. Къминс, 3. Уортън (67′), 4. Дохърти, 5. Макгийвър, 6. Маквей (76′), 7. Галт, 8. Брейди, 9. Орси (75′), 10. Заната, 11. Бърнс.
Рез.: 20. Стот, 12. Мортимър, 14. Браун (75′), 15. Фой, 16. Гибсън, 17. А. Милър (67′), 18. Макфърсън (76′).

Ст. „Екселсиор“, Еърдри, 1.011 зр.

Войник е професия

от Ясен Праматаров
лиценз CC BY

Задължителната казарма в мирно време учи само на три неща:

  1. скатаване, неработене,
  2. тютюнопушене,
  3. търпене на унижения.

Все неща, от които България има нужда, така ли?

И не, не учи на патриотизъм, приятелство, хигиена – заблудили са ви или изкривените ви спомени, ако сте ходили, или изкривените спомени на други хора, ако не сте.

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

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

Но пък как звучи патриотично, нали… А, да, и печели министерски постове.