Меню

Техники за напреднали

Влез Излез

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

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

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

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

В интернет съм срещал различни начини за постигането на целта, като най-широко разпространеният метод е при редактиране на съдържанието от 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“.

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

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

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

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax