Создавая блоги на WordPress, я не ставлю на них много плагинов. Но как-то так получается, что со временем плагины размножаются, как кролики весной. Проходит месяц-другой жизни сайта и, кроме необходимого минимума плагинов на блоге появляются плагины для виджетов, дополнительных функций и различных украшательств. Кажется, что все плагины нужны, но со временем они начинают сильно тормозить работу сайта (каждый из них создает дополнительные запросы к базе данных) и конфликтовать между собой.
А использование сторонних модулей на сайте увеличивает риск взлома админки. К тому же приходится постоянно беспокоится о работе устаревших плагинов при обновлении WordPress.
Думаю, эта проблема знакома многим.
Когда на одном из моих блогов количество плагинов достигло критической массы, так что блог начал регулярно зависать, я задумалась, как от них избавиться, не снижая при этом функциональности сайта, и нашла способ - заменить плагины кодом, интегрированным в файлы темы.
В этом посте я дам несколько примеров кода, заменяющего плагины.
Начну с плагинов для комментариев.
1. Плагин "Последние комментарии"
Создаем в папке своей темы файл functions.php и вставляем в него следующий код:
<?php
function get_recent_comments($args) {
global $wpdb, $comments, $comment;
extract($args, EXTR_SKIP);
$options = get_option('widget_recent_comments');
$title = empty($options['title']) ? __('<h2>Последние комментарии</h2>'):
apply_filters('widget_title', $options['title']);
if ( !$number = (int) $options['number'] )
$number = 5;
else if ( $number < 1 )
$number = 1;
else if ( $number > 10 )
$number = 10;
if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");
wp_cache_add( 'recent_comments', $comments, 'widget' );
}
echo $before_widget;
echo $before_title . $title . $after_title;
echo '<ul id="recentcomments">';
if ( $comments ) : foreach ( (array) $comments as $comment) :
echo '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_comment_author_link(), '<a href="'. get_comment_link($comment->comment_ID) . '">'. get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
endforeach; endif;
echo '</ul>';
echo $after_widget;
}
?>Дальше, в то место, где нужно вывести список последних комментариев, например, в файл sidebar.php вставляем этот код:
<?php get_recent_comments(array('number' => 10)); ?>В скобках указано количество комментариев, которое мы хотим видеть в своем блоге, в данном случае 10.
2. Плагин "Show_top_commentators":
Этот код также вписываем в файл functions.php:
<?php
function dp_top_commentators($limit=10) {
global $wpdb;
$sql = "SELECT $wpdb->comments.comment_author,
$wpdb->comments.comment_author_email,
$wpdb->comments.comment_author_url,
COUNT( $wpdb->comments.comment_ID )
AS comment_count FROM $wpdb->comments GROUP BY
$wpdb->comments.comment_author_email ORDER BY comment_count LIMIT $limit";
$topcommentators = $wpdb->get_results($sql, OBJECT);
foreach ($topcommentators as $tc) {
?>
<li><a class="username" href="<?php echo $tc->comment_author_url; ?>#">
<?php echo $tc->comment_author; ?></a>
</li>
<?php } } ?>Сам топ комментаторов выводим так:
<?php dp_top_commentators(10); ?>
Продолжение следует ...







К посту "Плагины для WordPress: есть ли альтернатива?" оставлено 2 коммент.
Посмотреть последние комментарииТрекбеки и пингбеки: