Дом моих мыслей

Оптимизация WordPress

06.08.2009 | Прочитано:11861

WordpressПоговорим об оптимизации . Писано про это уже столько, что можно начать оптимизацию с  базы, а закончить вебсервером. И поговорим потому, что несколько блогов, за последнее время, обратились за помощью. И не в том, что CMS последних версий стала плохо, а из-за того, что ряд есть сторонних причин, которые мешают системе или затормаживают ее.

Причина такой заторможенности как правило либо в плагинах, либо в теме, что встречается уже очень часто. Однажды была запись у меня о том, как можно оптимизировать тему WordPress, чтобы она заработала быстрее. Но это мелочи, которые лучше оставить на потом, на сладкое.

  • начинается с базы данных. Нужно оптимизировать таблицы. Заходим в phpMyAdmin, выбираем нашу БД и далее:

phpMyAdmin - оптимизация таблиц БД

Это поможет серверу БД более быстро работать с таблицами, что немного снизит нагрузку. В более ранних версиях phpMyAdmin может не быть пункта «Отметить требующие оптимизации». Тогда просто выбираете все таблицы и делаете с отмеченными «Оптимизировать».

  • Избавляемся от всех не нужных плагинов и особенно от тех, которые не совместимы с данной версией CMS. Очень часто такие плагины не совсем корректно работают.
  • Удаляем из темы 3 абсолютно не нужные вещи: версию движка и, если не планируете использовать Windows Live Writer, то и манифест. Добавляем 3 строчки кода в файл 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’);

    Об этом сказано в файле «ПРОЧИТАТЬ ОБЯЗАТЕЛЬНО ПЕРЕД УСТАНОВКОЙ.html» в дистрибутиве правильного русского WordPress.

  • Тема. Проверьте ее на предмет использования плагинов типа Popular Posts, Similar 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>';
	}
}
?>

Может знаете еще какие-либо методы? Пишите, попробуем.

, Wordpress

Похожие статьи