Заглавия на Private и Protected страници в WordPress

Тези от вас, които използват WordPress, може би знаят, че когато създадете нова частна (private) страница или страница с парола (password protected), при преглеждането им WordPress добавя съответните префикси пред името им.

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

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

Филтър the_title

В интернет съм срещал различни начини за постигането на целта, като най-широко разпространеният метод е при редактиране на съдържанието от the_title филтъра. След като се закачиш за филтъра, правиш проверка дали името на страницата започва с “Private: ” (в случая с частни страници — аналогично е и за защитени с парола), а след това просто премахваш тази част.

Макар и това да върши работа, всъщност е неправилно. Какъв е проблемът в метода? Неслучайно “Private:” го написах на английски. Да речем че работите по проект, с английска инсталация на WordPress — ще трябва да премахнете именно този текст. Ако работите с друг език обаче — трябва да правите проверка за него. А ако имате многоезичен сайт — отделна проверка за всеки език ли ще правите? Усещате на къде бия, нали? Може да работите и по тема/разширение (plugin), които да нямате идея на какъв език ще работят. Ето при тези обстоятелства, използването на the_title филтъра е грешно.

Правилното решение

За да решим проблема по правилния начин трябва да използваме друг филтър — private_title_format за частни/private страници, или protected_title_format за страници защитени с парола/password protected.

Ето пример за частни страници:

add_filter('private_title_format', 'my_private_title');
function my_private_title($title_format) { return '%s'; }

Самият филтър е предназначен с идеята за интернационализация и многоезичност. Използва се за да промени формата на заглавието, а не самото заглавие (което се използва в the_title филтъра). По подразбиране форматът е “Private: %s“. Трябва да се уточни, че резултатът от филтъра се прекарва през функция за интернационализация, затова се използва “%s“, което след това ще се замени със самото заглавие. Останалата част може лесно да се предостави на преводачите и при наличие на необходимите .MO файлове всичко ще работи чудесно.

В нашия случай ние връщаме резултат единствено “%s“, което ще рече: “Дай ми само заглавието” — без префикси от рода на “Private” или “Protected”.

Надявам се да има хора, на които информацията им е била полезна!

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.