Нещодавно в іншому блозі я розглядав популярний в рунеті скрипт кеш MaxCache для wordpress, який дозволяє прискорити завантаження блогу і знизити навантаження на хостинг. Результати у нього досить хороші - зниження споживання пам'яті в 100 раз, сторінки вантажаться швидше в 1000 разів, а базу даних взагалі не використовує. Установка проста, єдиною складністю можна вважати оплату за скрипт в 30 у.о., але при сильно відвідуваних проектах з 5-10к користувачами в добу він може окупитися вже за пару місяців за рахунок економії на хостингу. Правда в процесі використання вдалося виявити, що кеш MaxCache не дружить з популярним плагіном Platinum Seo - сьогодні розповіді про невеликому хаке, який може більш-менш вирішити проблему.
Пару слів про проблему. При включенні кеша MaxCache і плагіна Platinum Seo виникала помилка з МЕТА тегом title для сторінки. При попаданні сторінки в кеш ключові слова і опис (keywords, descriptions) зберігалися, а title зникав. А адже саме заголовок сторінки є мало не найважливішим при оптимізації сторінки. Я точно не знаю як «бачили» і «сприймали» така поведінка роботи пошукових систем - можливо вони могли брати сторінку не з кешу, може немає - в будь-якому випадку потрібно було щось зробити з цим title тегом.
Як виявилося проблема виникає через помилку розробників в плагіні Platinum Seo. Ось як прокоментував мені творець кеша MaxCache:
Мій кеш ніяких змін в роботу WordPress не вносить. Але робота кеша заснована на буферизації виведення, тобто спочатку включається буферизация, після отработивает кеш і буфер виводиться. Робота плагіна Platinum SEO полягає в заміні в тілі сторінки рядків: тайтл, ключові слова і т.п. Тобто замість того, щоб просто прописати функцію для meta і title, розробники вирішили включати свою буферизацию виведення. Але забули прописати завершення буферизації, тому той код, який знаходиться в буфері плагіна і обробляється на предмет тайтлів просто виявляється поза буфера кешу. Якби розробники плагіна використовували буферизацию коректно, то проблем не було б.
В процесі деяких досліджень вдалося замінити, що кеш Maxcache може зчитувати title сторінки, якщо він прописаний в шаблоні блогу. Тут і виникла ідея - а чому б не зробити seo оптимізований title в wordpress блог в шаблоні. Принаймні це було простіше ніж вивчати тисячі рядків коду плагіна Platinum Seo.
Отже, заходимо в розділ адмінки «Зовнішній вигляд» - меню «Редактор». Відкриваємо файл шаблону header.php і в самому верху там де розташовується title додаємо приблизно ТАККА конструкцію:
<Title> <? Php if (is_single ()) {echo (get_post_meta ($ post -> ID, title, true). ":: Дизайн Манія"); } Else if (is_page ()) {echo (get_post_meta ($ post -> ID, title, true). ":: Дизайн Манія"); } Else if (is_category ()) {echo (single_cat_title ( '', true). ":: Дизайн Манія"); } Else if (is_tag ()) {echo ( "Дизайн Манія ::"); echo (single_tag_title ( '', true)); } Else if (is_month ()) {echo (the_time ( 'F, Y'). ":: Дизайн Манія"); } Else if (is_search ()) {echo ( "Пошук по сайту Дизайн Манія"); } Else if (is_404 ()) {echo ( "Сторінка на сайті не знайдено."); } Else if (is_home ()) {echo ( "Дизайн Манія - блог про веб дизайн (web design)"); }?> </ Title>
<Title> <? Php if (is_single ()) {echo (get_post_meta ($ post-> ID, title, true). ":: Дизайн Манія"); } Else if (is_page ()) {echo (get_post_meta ($ post-> ID, title, true). ":: Дизайн Манія"); } Else if (is_category ()) {echo (single_cat_title ( '', true). ":: Дизайн Манія"); } Else if (is_tag ()) {echo ( "Дизайн Манія ::"); echo (single_tag_title ( '', true)); } Else if (is_month ()) {echo (the_time ( 'F, Y'). ":: Дизайн Манія"); } Else if (is_search ()) {echo ( "Пошук по сайту Дизайн Манія"); } Else if (is_404 ()) {echo ( "Сторінка на сайті не знайдено."); } Else if (is_home ()) {echo ( "Дизайн Манія - блог про веб дизайн (web design)"); }?> </ Title>
Тепер трохи пояснень. Колись уже розповідав про те що таке умовні оператори в wordpress і як з їх допомогою можна вивести текст тільки на головну сторінку. Тут використовується той же самий принцип - перевіряються різні умови:
- is_single - якщо сторінка є постом блогу;
- is_page - окрема сторінка (Page) в wordpress;
- is_category - сторінка категорії;
- is_tag - умова відповідає сторінці тегів;
- is_month - якщо відкритий архів по місяцях;
- is_search - сторінка з результатами пошуку;
- is_404 - помилка 404 - немає такої сторінки в блозі;
- is_home - ну і наостанок головна сторінка сайту, може бути ще is_front_page.
Значення title для кожного випадку можна взяти з налаштувань плагіна Platinum Seo.
Функція echo в коді вище просто виводить текст всередині тега title для заголовка. Що стосується використовуваних функцій, то single_tag_title і single_cat_title відповідно виводять назви тегів і категорій, а ось get_post_meta діє куди більш тонко. Справа в тому, що плагін Platinum Seo при заповненні полів title, keywords, description для поста або сторінки створює довільні поля custom fields , А з них можна вважати значення за допомогою функції get_post_meta.
Таким чином, для всіх постів блогу заголовок title вийде саме таким, яким ви задавали його в Platinum Seo, тобто проблема оптимізації для пошукових систем буде вирішена. Так, звичайно, тайтли сторінок категорій і тегів будуть вельми зім'ятими, але тут можна спробувати плагін All Meta (Я не тестував, але, по ідеї, там ніяких глюків бути не повинно). В принципі, код для header.php можна ще трохи доопрацювати, додавши обробку всіх умовних операторів - для архіву року, дня (якщо є календар в блозі) + зробити зчитування МЕТА тегів при переході по сторінках сайту і т.п. Сам принцип хака, думаю, вам вже зрозумілий.
UPDATE: Я спробував поєднати дане рішення з плагіном All Meta, в результаті чого вийшов ще один хак для Maxcache (Більш просунутий), що дозволяє використовувати і коректно виводити заголовок (title) для сторінок архівів тегів і категорій.
Читати книги - це не тільки корисно, а й модно, відвідайте книжковий інтернет магазин і замовте тобі з доставкою додому пару книг швидко і зручно.
Багато користувачів iPhone та іншої техніки Apple люблять виділятися, так бампера на iPhone 4 допоможуть знайти вашому апарату оригінальний, стильний і унікальний вид.
Останнім часом правильно харчування стало вельми актуальною проблемою, корисність продуктів для організму іноді може виявитися більшою ніж якісь ліки.