Обсудим оптимизацию сайта на WordPress. Материала по этой теме настолько много, сто оптимизировать в wordpress можно практически всё, начиная от вебсервера и заканчивая базой данных. Однако в последнее время знакомые блоггеры всё чаще обращаются ко мне за помощью по этому вопросу и я решил написать ряд обзорных статей.
Прежде всего следует заняться базой данных, оптимизировать её таблицы. Для этого открываем phpMyAdmin, выбираем требуемую базу данных, затем из доступных команд выполняем оптимизацию таблиц.
Эти действия ускорят обработку сервером запросов к таблицам базы данных, и таким образом уменьшат нагрузку на сервер. Если вы пользуетесь слишком старой версией phpMyAdmin, у вас может отсутствовать пункт “отметить требующие оптимизации”. В таком случае просто отмечаете все таблицы и выполняете команду “оптимизировать”.
Следует пересмотреть список используемых плагинов, и деактивировать все ненужные, в особенности несовместимые с используемой версией движка wordpress, они зачастую могут работать не вполне корректно.
Удаляем из хедера три совершенно ненужные вещи: версию движка и предназначенные для взаимодействия с блог-клиентами ссылки. Редактируем functions.php, добавляя в него строки:
< ?php remove_action(‘wp_head’, ‘wp_generator’); ?>
< ?php remove_action(‘wp_head’, ‘wlwmanifest_link’); ?>
< ?php remove_action(‘wp_head’, ‘rsd_link’); ?>
Отключает сохранение ревизий постов без плагина. Для этого в файл wp-config.php добавляем такую строку:
define(‘WP_POST_REVISIONS’, false);
Для удаления ранее сохранённых ревизий надо сделать следующее:
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = ‘revision’
Хотя, если недостаточно знакомы с системой, лучше этого не делать.
Устанавливаем плагин WP Super Cache (или активируем его, если он уже присутствует в вашей сборке wordpress).
В файле wp-config.php заменяем строку define (‘WPLANG’, ‘ru_RU’); на следующее:
if (strpos($_SERVER['REQUEST_URI'], ‘wp-admin’))
define (‘WPLANG’, ‘ru_RU’);
else
define (‘WPLANG’, ‘ru_RU_lite’);
Проверьте используемую тему на предмет наличия плагинов типа Similar Posts, Popular Post. Их совершенно безболезненно можно заменить более лёгким кодом. Например, плагин Popular Posts можно заменить, добавив в файл sidebar.php такой код:
<li><h3>Популярные записи</h3>
<ul>
<?php
$popular_posts = $wpdb->get_results(“SELECT id,post_title
FROM {$wpdb->prefix}posts ORDER BY comment_count DESC LIMIT 0,10″);
foreach($popular_posts as $post) {
print “<li><a href=’”. get_permalink($post->id) .”‘>”.$post->post_title.”</a></li>\n”;
}?>
</ul>
</li>
А для отображения схожих постов добавляем в single.php такое:
<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
‘tag__in’ => $tag_ids,
‘post__not_in’ => array($post->ID),
’showposts’=>5, // Количество записей для вывода.
‘caller_get_posts’=>1
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo ‘<h3>Похожие публикации</h3><ul>’;
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Постоянная ссылка на <?php the_title_attribute(); ?>”><?php the_title(); ?></a></li>
<?php
}
echo ‘</ul>’;
}
}
?>
Теперь избавимся от ненужных мета-тегов в хедере
При использовании в шаблоне функции wp_head() вы довольно быстро обнаружите, как применяющие хуки этой функции плагины (например All in the SEO) засорят блок
множеством ненужных мета-тегов, ссылок на категории RSS и прочим мусором. От всего этого избавиться совсем несложно.Для этого потребуется отредактировать файл functions.php (или создать его, если он ещё не создан), и добавить в него такой код:
< ? remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'wlwmanifest_link'); remove_action( 'wp_head', 'feed_links_extra'); remove_action( 'wp_head', 'feed_links'); remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'index_rel_link' ); remove_action( 'wp_head', 'parent_post_rel_link'); remove_action( 'wp_head', 'start_post_rel_link'); remove_action( 'wp_head', 'adjacent_posts_rel_link'); ?>
Сделав это, вы удалите из блока
9 ненужных строк.Вывод постов с применением query_posts()
query_posts($query) использует для получения записей обращение к конструктору запросов $query. То есть, при необходимости, скажем, вывести 7 записей из определённой категории достаточно указать:
query_posts(‘cat=3&showposts=7&orderby=date’);
И затем, как обычно вsвести их циклом:
// the Loop
<? while (have_posts()) : the_post();?>
<a href=”<?php the_permalink() ?>”><?php the_title(); ?></a>
<? endwhile;?>
Откуда же могут возникнуть сложности? Дело в том, что при добавлении такого кода, скажем, в шаблон шапки сайта, сайт перестанет правильно отображаться. Проблема в том, что совершенно такие же циклы присутствуют у вас и в шаблоне страницы и в шаблоне отдельной записи, и все они унаследуют заданный запрос query_posts().
Для того, чтобы избежать такого наследования, применим немного другую конструкцию:
<? $my_query = new WP_Query(‘cat=3&showpost=5&orderby=date’);
while($my_query->have_posts()) : $my_query->the_post(); ?><li><a href=”<?php the_permalink() ?>”><?php the_title(); ?></a></li>
<? endwhile; ?>
Приведённый кусок кода обеспечивает то, что цикл в шапке будет запускаться исключительно по запросу $my_query, который не будет использоваться в других циклах, в шаблонах страницы или поста.
Вывод нескольких блоков навигации
Если вы хотите вывести на странице несколько блоков навигации, скажем мены слева, верхнее меню и т.д., сделать это можно с применением произвольных полей. Не беспокойтесь, в этом разделе много кода не будет
Сделать это совсем несложно, применив встроенную конструкцию wp_list_pages(), передав ей в качестве параметра название требуемого поля meta_key, скажем, так:
< ?php wp_list_pages('sort_column=menu_order&title_li=&meta_key=top_menu'); ?>
Применив этот метод, вы сможете разместить требуемый список страниц в нужной вам части сайта.
Если Вы насладились этим постом, убедитесь что Вы подписались на мой RSS Подписаться на RSS feed!
Комментировать к “Оптимизация WordPress”
Оставить комментарий