Заглавия на 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“.
Надявам се да има хора, на които информацията им е била полезна!