Оптимізуємо WordPress header і видаляємо зайві елементи
Напевно той, хто замислювався про оптимізацію блогу на wordpress або з нею вже стикався, знає про заміну функцій header на подібне значення. Це означає, що замість функції header використовується подібне значення, наприклад, в місце bloginfo ( 'charset') вказують charset = UTF-8. Раніше цей мануал по оптимізації бази досить часто використовували, а зараз вважається що продуктивність в ході запропонованого дії не так і велика, тому що більшу частину значень wordpress header бере з бази даних за однкратное до неї звернення. Незважаючи на цей факт, я все ж хочу заглибитися в тему оптимізації wordpress header, тому як кілька дуже цікавих моментів там все ж є, а відповіді на них я відшукав в цій статті.
Подивіться уважно на код HTML в wordpress блозі, в області head, порівняйте його з файлом header.php, бачите, що крім зазначених стилів CSS і скриптів Javascript там знаходиться ще безліч рядків. Ці рядки там з'являються при використанні плагінів, які додають в HTML свої скрипти і стилі, буває так, що результуючий код створюється досить великий.
Ось якщо розглянути один з часто використовуваних плагінів розмежування на сторінки WP-PageNavi, який відмінно справляється зі своїм завданням, але при роботі вписує свій власний файл стилів CSS. І якщо це можливо, то при оптимізації сайту бажано об'єднати якусь кількість CSS файлів і мати один. Але не все так просто, як здалося на перший погляд, не можна просто додати необхідні рядки в свій файл style.css, тому що від виклику стилів плагіна звільнитися, не вийти без деактивації WP-PageNavi.
Як виявилося за допомогою хуков функції wp_head реалізується велика частина «додаткових вставок» потрібних для блоку head. ЇЇ, швидше за все, можна знайти в коді файлу шаблону header.php. І просто видалити її не можна, так як неодмінно потягне за собою певні наслідки, що негативно може позначитися на роботі блогу, адже зникнуть не тільки «зайві вставки», а й інші, без яких не можна обійтися.
Можна піти іншим шляхом, деактивувати деякі «вставки» без видалення функцію wp_head. Використовуємо наступний алгоритм.
1) Потрібно ретельно переглянути основний файл php плагіна, хукі якого Ви зібралися видалити. Пошукайте там наступну конструкцію:
add_action ( 'wp_head', 'plugin_function_here');
2) Щоб коректно позбудеться від даного виклику, потрібно додати в файл functions.php наступний рядок:
remove_action ( 'wp_head', 'plugin_function_here');
3) Зберігаємо шаблон і перевіряємо, що у нас вийшло.
Унікальні випадки теж зустрічаються, при яких застосування remove_action для wp_head () не працює. Наведу як приклад WP-PageNavi (версія 2.5.0), там явного виклику функції в wp_head () немає, незважаючи на це, плагін підвантажує свій файл стилів. Уважно подивіться на початковий код wp-pagenavi.php, там є така функція «Enqueue PageNavi Stylesheets», що додає стилі через:
add_action ( 'wp_print_styles', 'pagenavi_stylesheets');
Дописуємо в файл функцій fuctions.php наступний рядок, щоб звільнитися від цього виклику:
remove_action ( 'wp_print_styles', 'pagenavi_stylesheets');
У роботі з непотрібними викликами і хукамі проглядається певний принцип - Ви шукайте потрібну функцію і відключаєте її.
Можна звільнитися і від інших не потрібних елементів, які ви не використовуєте, застосувавши хакі для functions.php, наприклад:
remove_action ( 'wp_head', 'feed_links_extra', 3); // посилання на додаткові rss категорій remove_action ( 'wp_head', 'feed_links', 2); // посилання на основний rss і коментарі remove_action ( 'wp_head', 'rsd_link'); // для сервісу Really Simple Discovery remove_action ( 'wp_head', 'wlwmanifest_link'); // для Windows Live Writer remove_ action ( 'wp_head', 'wp_generator'); // прибирає версію wordpress // прибираємо різні посилання при відображенні поста - наступна, попередня запис, оригінальний url і т.п. remove_action ( 'wp_head', 'start_post_rel_link', 10,0); remove_action ( 'wp_head', 'index_rel_link'); remove_action ( 'wp_head', 'rel_canonical'); remove_action ( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); remove_action ( 'wp_head', 'wp_shortlink_wp_head', 10, 0);
Є один нюанс, деякі функції можуть, просто на просто, не працювати в залежності від версії wordpress, я проводив тестування для wp 3.0.4, знайти підходящі функції Ви можете в wp-includes / default-filters.php.
В процес оптимізації можна заглибитися ще більше. Трапляється так, що шаблони блогу можуть викликати jQuery Javascript через wp_head () одночасно з іншими схожими скриптами поза wp_head (). Щоб не з'являлися зайві виклику, потрібно просто позбутися від jQuery в wp_head (), але з'ясувалося, що зробити це не так вже й просто. Механізм remove_action ( 'wp_head', 'jquery'); не працює, але на щастя знайшлося інше рішення:
wp_deregister_script ( 'jquery');
При розміщенні її в functions.php, в адміністративній панелі управління wordpres, перестають працювати деякі скрипти, що відповідають за меню, що випадає і кілька інших функцій. Провівши кілька тестувань, автору оригінальної статті вдалося знайти цікаве рішення, він додав відповідні рядки не в файл functions.php, а в header.php:
<? Php wp_deregister_script ( 'jquery'); ?> <? Php wp_head (); ?>
Я зробив кілька інакше - додав деякий умова в functions.php
if (! is_admin ()) wp_deregister_script ( 'jquery');
Все працює!
Виходить, що завдяки даним невеликих хаков, Ви можете успішно позбутися від елементів в header, які не використовуєте, а також об'єднати стилі і скрипти в єдиний файл.
Для header ще один маленький хак:
remove_action ( 'wp_head', 'wp_syntax_head');
Він дозволяє прибирати підключення файлів стилів для виділення в тексті програмного коду, вміст wp-syntax.css не дуже велике і з легкістю його можна помістити в звичайний файл стилів.
джерело
Php wp_deregister_script ( 'jquery'); ?Gt; <?
Php wp_head (); ?