Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Главная » WordPress » Плагины » Глюк с заглавной буквой title в плагине All in One SEO

Глюк с заглавной буквой title в плагине All in One SEO

Плагин All in One SEO достаточно популярен у меня в блоге, уже третий раз о нем пишу. Для тех, кто не в курсе что он делает из зачем нужен советую почитать заметку как легко увеличить трафик для блога с поисковиков (с его помощью, разумеется). Чуть позже я рассказывал как избавиться от автоматического добавления тегов поста в keywords. Да, я знаю, что для этого имеется галочка в настройках админки, но по удивительным причинам эта опция не сработала. Возможно, в новых версиях пофиксили.

Сегодня у меня выскочил еще один стары глюк плагина All in One SEO. Открывая страницу тегов, категорий или поиска первые буквы в title отображались не совсем корректно:

плагин All in One SEO

Конечно, это было недопустимо для меня, и могло нарушить мои планы относительно раскрутки проекта.

Что характерно — данные признаки можно увидеть не на всех хостингах, видимо это как-то связанно с настройками веб-сервера. Я, увы, не специалист в этом, поэтому принялся изучать и экспериментировать с php кодом плагина. Кстати, ранее я как-то уже искал выход из сложившейся ситуации в google, но вразумительного объяснения найти не смог — кто-то советовал поставить русскую версию плагина, кто-то предлагал скачать «пофиксеную» (но весьма древнюю) версию модуля. Собственно, такая у меня уже имелась и хорошо работало на одном из хостингов, а вот на другом почему-то отказалась. Поэтому было принято решения потратить лишний часик и разыскать первопричину столь безобразной работы wordpress плагина All in One SEO. Вот что было обнаружено мной в процесс исследований (весь код взят из файла all_in_one_seo_pack.php).

Ошибку при выводе категорий вызывал вывод функции php под названием ucwords. Она делает заглавной первую букву всех слов, встречающихся в строке. Пришлось от этого отказаться, тем более, что я и так все категории пишу с большой буквы.

   $category_description = $this->internationalize(category_description());
// $category_name = ucwords($this->internationalize(single_cat_title('', false)));
   $category_name = ($this->internationalize(single_cat_title('', false)));

Но вот беда. Теги все равно выводились с ошибками. Оказывается над ними также выполнялись подобные преобразование, правда, несколько иным путем. В плагине имеется функция capitalize, которая, насколько я понял, была создана для решения той же задачи, что и ucwords. Вообще тут в коде как-то все запутанно, возможно, там каким-то образом еще участвует массив в начале поста $UTF8_TABLES[‘strtoupper’]. Но копаться в этом я не стал, а просто закомментировал вызов этой функции в ходе работы. Хотя достаточно просто убрать одну из ее строк, которая занимается собственно, преобразованием.

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;
}

После всего этого залил новую версию файла all_in_one_seo_pack.php на сервер и все заработало так, как должно было.

P.S. Я знаю, что есть другие плагины для ввода заголовка и других seo-штук, об этом уже дискутировали, меня All in One SEO устраивает, в принципе. Пост чисто образовательного характера, «для справки» можно сказать, поскольку в 90% источников, где упоминалась данная проблема, так и не было приведено решения.

P.P.S. Для интересующихся покером советую почитаь — расчет вероятностей в покере!

Поисковое продвижение сайтов от профессионалов для привлечения новых клиентов.

27.04.09

Категории: Плагины.

Теги: , , , , , ,

12 Comments
  1. Ney

    На самом деле проблема довольно популярная. При работе с мультибайтовыми строками (UTF-8) стандартные строковые функции PHP некорректно работают. Нужно использовать мультибайтовые строковые функции из библиотеки mbstring (http://php.net/mbstring).
    Например, вместо strtoupper($str) надо писать mb_strtoupper($str, ‘UTF-8’).

  2. Tod

    Ney, спасибо за информацию) я в php какбы не сильно разбираюсь, поэтому просто убрал эти функции.

  3. Сергей

    Александр, спасибо большое! Воспользовался твоим хинтом и — проблема решена. Комментарий Ney тоже верный — он всё правильно уточнил.

  4. Дмитрий

    Очень долго искал что-то внятное по проблеме первой буквы..
    Спасибо, tod’у за простой способ избавления от проблемы.
    Пофиксил All in One Seo Pack 1.5.6. Работает на УРА!

  5. Gambler

    Сегодня возился с этой проблемой, названия категорий пропали, а с тегами стало все в порядке, наверное просто другая версия плагина была, короче поставил я по итогу последнюю версию (на сегодняшнее утро — 1.6.4.1) и тут без проблем все работает.

    Кстати старый плагин отлично работает на укр хостинге Hvosting, а на рос Мастерхосте заглючил.

  6. Yury

    может вы знаете решение этой же проблемы для новой версии плагина 1.6.1
    в ней таких строк даже нету, а проблемы вот остались (

  7. Tod

    Нужно копаться в коде. Кстати, в последней версии плагина вроде бы исправили — там есть в настройках галочка «делать заглавной первую букву», насколько я помню.

  8. Dinka

    Спасибо, это замечательное решение работает и в последней версии 1.6.8.1.
    Но, тем кто не нашел — этот код, описанный в статье, нужно просто найти в файле aioseop.class.php в папке плагина. И все работает :)

  9. SeoAdvicer

    В новых версиях плагина все немного изменилось. Описал здесь: http://seoadvicer.ru/all-in-one-seo-pack-bag/
    Хотя принцип остался тот же, но новичок не разберется ;)

  10. Маша

    Наконец, нашёлся блог, где описана проблема, то всё никак не получалось найти способ как её побороть. Оказывается хватило версию плагина поменять! :)

  11. Макс

    Сделал как написано — пока все по старому. Поставил Платинум Сео Пэк — тоже самое….
    Разобрался. Ошибся в одном месте, отлично!

  12. koba

    Спасибо за подсказку по галочке — Capitalize Category Titles:, у меня версия 1.6.13.1, убрал галку и стало нормально отображаться

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.