Недавно столкнулся с такой проблемой: на страницах категорий и меток (тегов) заглавие, т.е. в теге title, первые буквы выводились не правильно. Виной всему оказался плагин all in one seo pack. Как так вышло, что раньше этого бага не было, – сказать трудно. Быть может я обновлял плагин, и баг появился с новой его версией, хотя сразу я бага не заметил. В общем, было принято решение исправить ситуацию. И вот как мне это удалось сделать.
Прежде всего хочу сказать, что поиск в интернете особо ничего не дал, хотя и натолкнул на определенные мысли. А дело всё в том, что информация имелась для старых версий плагина. Объяснялось все на примерах функций, которых в новой версии я не нашел. По крайней мере там, где обещали авторы. Пришлось просматривать код самому.
В общем, если вы немного разбираетесь в php, вот мануал по решению проблемы:
Ищем файл плагина, который по умолчанию лежит здесь: /wp-content/plugins/all-in-one-seo-pack/ Файл называется aioseop.class.php. Открываем его и видим там много строк и функций. Нам понадобиться такая строка:
$category_name = ucwords($this->internationalize(single_cat_title('', false)))
Она встречается в файле минимум 3 раза. И ещё один раз это строка закомментирована. Комментированную строку можно не трогать, а вот другие заменяем на:
$category_name = $this->internationalize(single_cat_title('', false));
Таким образом мы решили проблему с первой букве в категориях. Что касается меток, тут ещё проще – ищем строку
$tag = $this->capitalize($tag);
и закомментируем её с помощью // . Выглядить будет так:
//$tag = $this->capitalize($tag);
Кстати, такая же проблема возникает и с заголовками поиска по сайту. Решается она аналогично с метками. Ищете строку (встречается 2 раза):
$search = $this->capitalize($search);
И комментируете её:
//$search = $this->capitalize($search);
Естественно, сохраняем это все и загружаем на сервер, если вы редактировали файл у себя на компьютере.
Что мы сделали? Мы запретили плагину заменять первые буквы категорий и меток, который правильно делать это не умеет. Лично мне нет надобности в этой функции, так как категории я и так пишу всегда с заглавной, а теги на то и теги, чтоб с маленькой буквы писались :) .
Если же вам все-таки жизненно необходимо выводить метки и результаты поиска с заглавной буквы, тогда можно просто в лоб заменить первые буквы на заглавные. Для этого, во-первых, не нужно комментировать те строки, которые мы закомментировали выше. Во-вторых, ищем в том же файле такой кусок кода:
function capitalize($s) { $s = trim($s); $tokens = explode(' ', $s); while (list($key, $val) = each($tokens)) { $tokens[$key] = trim($tokens[$key]); $tokens[$key] = strtoupper(substr($tokens[$key], 0, 1)) . substr($tokens[$key], 1); } $s = implode(' ', $tokens); return $s; }
Это именно та функция, которая отвечает за регистр первых букв для меток и результатов поиска. Немного видоизменяем эту функцию таким образом:
function capitalize($s) { $s = trim($s); $s = str_replace("й","Й",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ц","Ц",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("у","У",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("к","К",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("е","Е",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("н","Н",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("г","Г",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ш","Ш",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("щ","Щ",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("з","З",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("х","Х",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ъ","Ъ",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ф","Ф",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ы","Ы",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("в","В",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("а","А",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("п","П",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("р","Р",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("о","О",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("л","Л",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("д","Д",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ж","Ж",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("э","Э",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("я","Я",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ч","Ч",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("с","С",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("м","М",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("и","И",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("т","Т",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ь","Ь",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("б","Б",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ю","Ю",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("ё","Ё",substr($s, 0, 2)) . substr($s, 2); $s = str_replace("q","Q",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("w","W",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("e","E",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("r","R",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("t","T",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("y","Y",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("u","U",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("i","I",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("o","O",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("p","P",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("a","A",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("s","S",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("d","D",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("f","F",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("g","G",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("h","H",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("j","J",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("k","K",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("l","L",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("z","Z",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("x","X",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("c","C",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("v","V",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("b","B",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("n","N",substr($s, 0, 1)) . substr($s, 1); $s = str_replace("m","M",substr($s, 0, 1)) . substr($s, 1); return $s; }
Как видите, теперь плагин All in One Seo Pack заменяет первые буквы на заглавные не с помощью спец. функций php, а с помощью прямой замены символов. Перебирает все возможные символы (кириллицу и латиницу) и выводит результат в теге tittle. Эту функцию можно упростить, написав массив из символов и цикл, но я не стал углубляться в программирование. Так проще и понятней новичку.
Кстати говоря, чтобы категории тоже меняли заглавные буквы необходимо добавить к строкам, которые вы меняли выше (для категорий) следующие:
$category_name = $this->capitalize($category_name);
Это нужно сделать столько же раз, сколько вы меняли строки для категорий.
Помните, что файл нужно сохранять в кодировке UTF-8, иначе будут отображаться одни каракули в итоге.
Надеюсь, не очень запутанно. Делайте все пошагово, и у вас все получится. В крайнем случае обращайтесь за помощью ко мне. Координаты на странице контактов, или пишите в комментариях ниже.
Постовые: Не нравится разбирать коды wordpress? Тогда собирайте конструктор lego star wars.
Девочкам интереснее куклы zapf, или как их ещё называют куклы цапф.
Эти и другие игрушки можно приобрести в магазине playmobil с большим выбором игрушек от playmobil.