Подстава от плагина Akismet: нарушение работы сайта
Сегодня обнаружился неожиданный глюк в работе сайта hope-recipes.ru, который явился следствием другого, более серьёзного глюка, нарушавшего нормальную работу сайта. Как выяснилось, корень проблемы скрывался в плагине Akismet, знакомом почти каждому владельцу сайта на WordPress, поскольку плагин включён в стандартную поставку движка. Далее по порядку.
Началась история с того, что сегодняшним вечером я добавил небольшую фишечку на «Рецепты Надежды»: если вы посетите актуальную в свете майских праздников статью о секретах и советах приготовления шашлыка (кстати, автор — ваш покорный слуга, в соавторстве с Надюшей и несколькими профессиональными шашлычниками). То увидите навигационное меню — содержание статьи. Для тех, кто сегодня уже «напосещался», сделал скриншот.
При нажатии на пункт меню происходит плавный скроллинг к соответствующему разделу статьи, по завершению которого заголовок раздела ещё и анимируется. Вот такой я мега-кодер. Кому интересно, вот код:
$('ul.mini_list a').click( function() { var href = $(this).attr( 'href' ), $point, y, s; if ( '#' == href[0] ) { $point = $( href ); if ( 50 < ( y = $point.offset().top ) ) y -= 50; s = $point.css( 'font-size' ); $point.css( { 'font-size': 0, 'opacity': 0 } ); $( 'html, body' ).stop().animate( { 'scrollTop': y }, 1000, function() { $point.animate( { 'font-size': s, 'opacity': 1 }, 1000 ); } ); } } );
На всякий случай: на вопрос, как этот код использовать на вашем сайте, отвечаю за Вебмани.
Так вот, код на сайт добавил, и только успел порадоваться плавному скроллингу, как обнаружил непорядок:
Так должно быть | А так есть |
Причём, у меня на localhost'е всё нормально работает. А на боевом сервере вот такая не-красота. Поковырявшись в скрипте, реализующем красивые всплывающие подсказки, я обратил внимание на другой косяк:
Такой развал вёрстки я мог бы ожидать увидеть, понять и простить на любом сайте. Обычное дело: какой-то не асинхронный скрипт долго загружается и не даёт браузеру дорисовать страницу. Но только не на этом сайте, ведь я так гордился, что перевёл все его скрипты на асинхронную загрузку.
Верный боевой товарищ Firebug указал на виновника:
На картинке хорошо видно, как плагин Akismet тормозит работу сайта: 34 секунды браузер ждал, пока загрузится скрипт плагина, который прицепляется к форме комментирования WordPress и загружается не асинхронно. И только через 34 секунды, не дождавшись, браузер вынес вердикт: «Aborted» — и продолжил загрузку страницы.
Долго сказка сказывается, но быстро дело делается: в считанные секунды после такого открытия я уже был в админке — отключал плагин Akismet и обновлял кэш. После чего блог «Рецепты Надежды» заработал вновь шустро, как электровеник.
Вообще мне этот Акисмет и не нужен совсем. От спама хорошо защищает Antispam Bee. А Akismet только зря в спам кидает время от времени нормальные комментарии.
А, да, вспомнил: благодаря Акисмету рядом с URL комментатора появляется удобный крестик, позволяющий легко удалить сомнительную ссылку, не заходя в редактор комментария.
Досадно, но ладно. Кстати, проверил другие сайты — там скрипт Акисмета грузится нормально. А вот на «Рецептах» попробовал даже снова включить плагин — не заработало. Странно, обычно у техники бывает такое, что глюк пропадает, если выключить и снова включить.
В общем, надеюсь, что глюк Акисмета больше никак и никогда не проявится. А если проявится, то разработчики его исправят. И вообще в такие дни вспоминаешь совет — использовать минимально необходимый набор плагинов.
5 ответов к “Подстава от плагина Akismet: нарушение работы сайта”
Спасибо, подумаю насчет вебмани...была сегодня на блоге Надежды и подумала, как это она сделала?..Я вообще сейчас нахожусь в процессе обновления дизайна сайта ...
Да, а цена вопроса?
Цена договорная. Сначала надо с заданием определиться, там и цена будет назначена.
Здравствуйте! Я впервые на вашем блоге. С удовольствием прочитала ваш пост, так как у меня сейчас проблема с этим плагином. Выдаёт ошибку:"Fatal error: Call to undefined function set_url_scheme () in /home/users1/a/annabrilliant/domains/uspehavsem.ru/wp-content/plugins/akismet/class.akismet.php on line 840". У меня теперь почему-то не работает функция «Оставить комментарий», проблема для посетителей, а я в ужасе от этого. Не подскажете, как удалить эту ошибку. Я вообще-то в этом вопросе «полный чайник». Заранее Вас благодарю. С уважением, Анна.
Анна, здравствуйте.
Проблема в том, что у вас версия WP 3.3.2, а плагин использует функцию
set_url_scheme()
, которая появилась только в WP 3.5. Вам нужно обновить WordPress