Вообще движок wordpress очень разнообразен, содержит много функций, которые в принципе не нужны для обычной работы блога, сегодня мы как раз разберем немного этих функций, и отключим их, чтобы сделать небольшую оптимизацию.
1. Функция is_blog_installed — каждый раз проверяет, установлен ли блог или нет.
Расположена она в файле — wp-includes/functions.php => Теперь читайте внимательно что написано в коде находящемся ниже.
/*находим строки с этим кодом */
function is_blog_installed() {
global $wpdb;
/*и меняем на вот эти */
function is_blog_installed() {
return true;
global $wpdb;
2. Функции _maybe_update_core(), _maybe_update_plugins(), _maybe_update_themes() — проверяют обновления движка, плагинов, установленной темы.
Расположены они в файле — wp-includes/update.php => Теперь снова читайте внимательно что написано в коде находящемся ниже и выполняйте нужные действия.
/*находим строки с этим кодом */
add_action( 'admin_init', '_maybe_update_core' );
add_action( 'wp_version_check', 'wp_version_check' );
add_action( 'load-plugins.php', 'wp_update_plugins' );
add_action( 'load-update.php', 'wp_update_plugins' );
add_action( 'load-update-core.php', 'wp_update_plugins' );
add_action( 'admin_init', '_maybe_update_plugins' );
add_action( 'wp_update_plugins', 'wp_update_plugins' );
add_action( 'load-themes.php', 'wp_update_themes' );
add_action( 'load-update.php', 'wp_update_themes' );
add_action( 'admin_init', '_maybe_update_themes' );
add_action( 'wp_update_themes', 'wp_update_themes' );
/*и просто закомментируйте их, либо удалите*/
#add_action( 'admin_init', '_maybe_update_core' );
#add_action( 'wp_version_check', 'wp_version_check' );
#add_action( 'load-plugins.php', 'wp_update_plugins' );
#add_action( 'load-update.php', 'wp_update_plugins' );
#add_action( 'load-update-core.php', 'wp_update_plugins' );
#add_action( 'admin_init', '_maybe_update_plugins' );
#add_action( 'wp_update_plugins', 'wp_update_plugins' );
#add_action( 'load-themes.php', 'wp_update_themes' );
#add_action( 'load-update.php', 'wp_update_themes' );
#add_action( 'admin_init', '_maybe_update_themes' );
#add_action( 'wp_update_themes', 'wp_update_themes' );
После всех этих отключений, снимается нагрузка примерно в 1.5 — 2 раза.
Гуляя по просторам интернета, читая разные статьи об оптимизации движка WordPress, набрел я на тему генерации мета тегов. Так вот, в тех статьях описано действие по отключению генерации ненужных мета тегов в шаблон темы, которая у вас установлена, тем самым снимая небольшую нагрузку на блог.
Там используется встроенная функция wordpress — remove_action, которая просто отключает генерацию тех тегов, которые вы задали в функции. Но тут есть один момент, что выполняя функцию, нагрузка не снимается, она также остается, ну может становиться чуть меньше. И дальше меня удивило, что автор пишет, что нельзя напрямую удалить нужный мета тег из генерации. И вот сегодня я опровергну этот факт, об не удалении генерируемых мета тегов.
Ну что же, приступим. :)
3. Удалим версию движка, от злобно настроенных глаз.
Открываем — wp-includes/general-template.php затем внимательно читаем что написано в коде и выполняем.
/*находим вот это код*/
function get_the_generator( $type ) {
switch ($type) {
case 'html':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '">';
break;
case 'xhtml':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '" />';
break;
case 'atom':
$gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
break;
case 'rss2':
$gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
break;
case 'rdf':
$gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
break;
case 'comment':
$gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
break;
case 'export':
$gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '"-->';
break;
}
return apply_filters( "get_the_generator_{$type}", $gen, $type );
}
/*и удаляем вот эти строки*/
case 'html':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '">';
break;
case 'xhtml':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '" />';
break;
4. Если вы не пользуетесь всякими блог-клиентами или веб сервисами для публикации записей, то можете смело выполнять следующие действия.
Открываем — wp-includes/general-template.php и снова делаем так как написано в комментариях к коду
/*находим вот этот код*/
function rsd_link() {
echo '<link rel="EditURI" title="RSD" href="' . get_bloginfo('wpurl') . "/xmlrpc.php?rsd\" />\n";
}
/*и меняем на вот этот*/
function rsd_link() {
return true;
}
/*находим вот этот код*/
function wlwmanifest_link() {
echo '<link rel="wlwmanifest" href="'. get_bloginfo('wpurl') . '/wp-includes/wlwmanifest.xml" /> ' . "\n";
}
/*и меняем на вот этот*/
function wlwmanifest_link() {
return true;
}
А теперь самое интересное. :)
5. Теги link rel=»start», link rel=»next», и так далее, используются браузером (например, Google Chrome) для предварительного кэширования. То есть когда пользователь заходит на страницу, браузер подгружает следующую и предыдущую страницы, чтобы при переходе на них она грузилась из кэша браузера. Таким образом, создается лишняя и ненужная нагрузка на блог, ведь вы и так используете кэширование плагином.
Открываем — wp-includes/link-template.php и снова все делаем по порядку…
/*находим вот этот код*/
function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_boundary_post_rel_link($title, $in_same_cat, $excluded_categories, true);
}
/*и меняем на вот этот*/
function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}
/*находим вот этот код*/
function index_rel_link() {
echo get_index_rel_link();
}
/*и меняем на вот этот*/
function index_rel_link() {
return true;
}
/*находим вот этот код*/
function parent_post_rel_link($title = '%title') {
echo get_parent_post_rel_link($title);
}
/*и меняем на вот этот*/
function parent_post_rel_link($title = '%title') {
return true;
}
/*находим вот этот код*/
function adjacent_posts_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', true);
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', false);
}
/*и меняем на вот этот*/
function adjacent_posts_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}
/*находим вот этот код*/
function next_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', false);
}
/*и меняем на вот этот*/
function next_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}
/*находим вот этот код*/
function prev_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', true);
}
/*и меняем на вот этот*/
function prev_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}
В заключении хочется сказать, что подходя к делу с четко поставленной целью, всегда добиваешься результатов.
h++p://makarou.com/nebolshaya-optimizaciya-wordpress-%E2%80%93-chast-1
h++p://makarou.com/nebolshaya-optimizaciya-wordpress-%E2%80%93-chast-2
Да, однако это надо после всех этих изменений сделать списочек всех этих исправленных файлов, чтобы при обновлении движка не заменить их на новые.