Как заменить плагины на код, оптимизация WordPress

Заменить WordPress плагины на кодВсем привет! Сегодня я расскажу, как заменить плагины WordPress на код. В прошлых двух статьях я говорил, как оптимизировать сайт ревизии постов и снижение нагрузки на сервер. Сегодня речь пойдет об очистке блога от плагинов, и их замене на код.

Как же не установить плагин, который улучшает сайт, делая его привлекательнее, да вот незадача, они очень сильно нагружают блог, поэтому заменим плагины на php код.

Замена плагина «Лучшие комментаторы»

Открываем файл шаблона functions.php и вставляем в него следующий код:

  1. <?php
  2. function top_commentators($limit=7) {
  3.  global $wpdb;
  4.    $sql = «SELECT $wpdb->comments.comment_author,
  5.   $wpdb->comments.comment_author_email,
  6.   $wpdb->comments.comment_author_url,
  7.   COUNT( $wpdb->comments.comment_ID )
  8.   AS comment_count FROM $wpdb->comments GROUP BY
  9.   $wpdb->comments.comment_author_email ORDER BY comment_count LIMIT $limit»;
  10.    $topcommentators = $wpdb->get_results($sql, OBJECT);
  11.    foreach ($topcommentators as $tc) {
  12. ?>
  13.     <li><a class=»username» href=»<?php echo $tc->comment_author_url; ?>#»>
  14.          <?php echo $tc->comment_author; ?></a>
  15.     </li>
  16. <?php } } ?>

Можно заменить во второй строке limit=7 ( выводит только 7 лучших комментаторов) на другое число.

Далее вставляем в то место, где хотим выводить список Топ-комментаторов, например в сайдбар, следующий код:

  1. <?php top_commentators(7); ?>

Замена плагина «Последние комментарии»

Открываем файл functions.php и прописываем следующий код:

  1. <?php
  2. function get_recent_comments($args) {
  3. global $wpdb, $comments, $comment;
  4. extract($args, EXTR_SKIP);
  5. $options = get_option(‘widget_recent_comments’);
  6. $title = empty($options[‘title’]) ? __(‘<h3>Свежие комментарии</h3>’):
  7. apply_filters(‘widget_title’, $options[‘title’]);
  8. if ( !$number = (int) $options[‘number’] )
  9. $number = 5;
  10. else if ( $number < 1 )
  11. $number = 1;
  12. else if ( $number > 10 )
  13. $number = 10;
  14. if ( !$comments = wp_cache_get( ‘recent_comments’, ‘widget’ ) ) {
  15. $comments = $wpdb->get_results(«SELECT * FROM $wpdb->comments WHERE comment_approved = ‘1’ ORDER BY comment_date_gmt DESC LIMIT $number»);
  16. wp_cache_add( ‘recent_comments’, $comments, ‘widget’ );
  17. }
  18. echo $before_widget;
  19. echo $before_title . $title . $after_title;
  20. echo ‘<ul id=»recentcomments»>’;
  21. if ( $comments ) : foreach ( (array) $comments as $comment) :
  22. 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>’;
  23. endforeach; endif;
  24. echo ‘</ul>’;
  25. echo $after_widget;
  26. }
  27. ?>

А в том месте, где хотите вывести вставьте код:

  1. <?php get_recent_comments(array(‘number’ => 10)); ?>

Вывод случайных изображений

Наверно, вы встречали в шаблонах приемы, когда выводятся случайные изображения. Данный прием можно повторить с помощью данного php-кода.

1. Откройте программу FTP менеджер.

2. Создайте папку, где будут храниться изображения.
3. Закачайте туда изображения, названия должны совпадать с названиями в коде.

  1. <?php
  2.   $images = array(
  3.         ‘изображение-1.bmp’,
  4.         ‘изображение-2.png’,
  5.         ‘изображение-3.gif’,
  6.         ‘изображение-4.png’,
  7.         ‘изображение-5.jpg’,
  8.     );
  9.     $image  = $images[array_rand($images)];
  10.     $output = «<img src=»http://сайт.ru/папка где хранятся изображения/» . $image . «» alt=»Перезагрузите браузер для нового случайного изображения» />»;
  11.     echo $output;
  12. ?>

Расширения изображений могут быть различными, чтобы изображения изображались пропишите полный путь к их папке.

Замена плагина «WordPress Related Posts» Похожие записи

Добавьте данный код в файл comments.php в начале. НО, если хотите сделать, как у меня, то зайдите в файл single.php и найдите строку <!— /post content —> эта строка говорит о конце записи, после нее идут нижние части ( комментарии, футер и др.), надо вставить код до этой строки:

  1.     <div class=»sample-posts»>
  2.     <h4>Советую почитать:</h4>
  3.     <?php
  4.     $categories = get_the_category($post->ID);
  5.     if ($categories) {
  6.         $category_ids = array();
  7.         foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
  8.         $args=array(
  9.         ‘category__in’ => $category_ids,
  10.         ‘post__not_in’ => array($post->ID),
  11.         ‘showposts’=>5,
  12.         ‘caller_get_posts’=>1);
  13.         $my_query = new wp_query($args);
  14.         if( $my_query->have_posts() ) {
  15.         echo ‘<ul>’;
  16.         while ($my_query->have_posts()) {
  17.         $my_query->the_post();
  18.     ?>
  19.     <li><a href=»<?php the_permalink() ?>» rel=»bookmark» title=»<?php the_title_attribute(); ?>»><?php the_title(); ?></a></li>
  20.     <?php
  21.     }
  22.     echo ‘</ul>’;
  23.     }
  24.     wp_reset_query();
  25.     }
  26.     ?></div>

Чтобы поменять количество выводимых статей, в строке ‘showposts’=>5, замените число на ваше.

Замена плагина Breadcrumb «Хлебные крошки» на php код

О плагине хлебные крошки можете почитать в статье про внутреннюю перелинковку сайта.

Откройте файл functions.php и вставьте следующий код:

  1.   function kod_breadcrumbs() {
  2.      $showOnHome = 0; // 1 — показывать «хлебные крошки» на главной странице, 0 — не показывать
  3.      $delimiter = ‘&raquo;’; // разделить между «крошками»
  4.      $home = ‘Главная’; // текст ссылка «Главная»
  5.      $showCurrent = 1; // 1 — показывать название текущей статьи/страницы, 0 — не показывать
  6.      $before = ‘<span class=»current»>’; // тег перед текущей «крошкой»
  7.      $after = ‘</span>’; // тег после текущей «крошки»
  8.      global $post;
  9.      $homeLink = get_bloginfo(‘url’);
  10.      if (is_home() || is_front_page()) {
  11.      if ($showOnHome == 1) echo ‘<div id=»crumbs»><a href=»‘ . $homeLink . ‘»>’ . $home . ‘</a></div>’;
  12.      } else {
  13.      echo ‘<div id=»crumbs»><a href=»‘ . $homeLink . ‘»>’ . $home . ‘</a> ‘ . $delimiter . ‘ ‘;
  14.      if ( is_category() ) {
  15.      global $wp_query;
  16.      $cat_obj = $wp_query->get_queried_object();
  17.      $thisCat = $cat_obj->term_id;
  18.      $thisCat = get_category($thisCat);
  19.      $parentCat = get_category($thisCat->parent);
  20.      if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ‘ ‘ . $delimiter . ‘ ‘));
  21.      echo $before . ‘Архив рубрики «‘ . single_cat_title(», false) . ‘»‘ . $after;
  22.      } elseif ( is_day() ) {
  23.      echo ‘<a href=»‘ . get_year_link(get_the_time(‘Y’)) . ‘»>’ . get_the_time(‘Y’) . ‘</a> ‘ . $delimiter . ‘ ‘;
  24.      echo ‘<a href=»‘ . get_month_link(get_the_time(‘Y’),get_the_time(‘m’)) . ‘»>’ . get_the_time(‘F’) . ‘</a> ‘ . $delimiter . ‘ ‘;
  25.      echo $before . get_the_time(‘d’) . $after;
  26.      } elseif ( is_month() ) {
  27.      echo ‘<a href=»‘ . get_year_link(get_the_time(‘Y’)) . ‘»>’ . get_the_time(‘Y’) . ‘</a> ‘ . $delimiter . ‘ ‘;
  28.      echo $before . get_the_time(‘F’) . $after;
  29.      } elseif ( is_year() ) {
  30.      echo $before . get_the_time(‘Y’) . $after;
  31.      } elseif ( is_single() && !is_attachment() ) {
  32.      if ( get_post_type() != ‘post’ ) {
  33.      $post_type = get_post_type_object(get_post_type());
  34.      $slug = $post_type->rewrite;
  35.      echo ‘<a href=»‘ . $homeLink . ‘/’ . $slug[‘slug’] . ‘/»>’ . $post_type->labels->singular_name . ‘</a> ‘ . $delimiter . ‘ ‘;
  36.      if ($showCurrent == 1) echo $before . get_the_title() . $after;
  37.      } else {
  38.      $cat = get_the_category(); $cat = $cat[0];
  39.      echo get_category_parents($cat, TRUE, ‘ ‘ . $delimiter . ‘ ‘);
  40.      if ($showCurrent == 1) echo $before . get_the_title() . $after;
  41.      }
  42.      } elseif ( !is_single() && !is_page() && get_post_type() != ‘post’ && !is_404() ) {
  43.      $post_type = get_post_type_object(get_post_type());
  44.      echo $before . $post_type->labels->singular_name . $after;
  45.      } elseif ( is_attachment() ) {
  46.      $parent = get_post($post->post_parent);
  47.      $cat = get_the_category($parent->ID); $cat = $cat[0];
  48.      echo get_category_parents($cat, TRUE, ‘ ‘ . $delimiter . ‘ ‘);
  49.      echo ‘<a href=»‘ . get_permalink($parent) . ‘»>’ . $parent->post_title . ‘</a> ‘ . $delimiter . ‘ ‘;
  50.      if ($showCurrent == 1) echo $before . get_the_title() . $after;
  51.      } elseif ( is_page() && !$post->post_parent ) {
  52.      if ($showCurrent == 1) echo $before . get_the_title() . $after;
  53.      } elseif ( is_page() && $post->post_parent ) {
  54.      $parent_id = $post->post_parent;
  55.      $breadcrumbs = array();
  56.      while ($parent_id) {
  57.      $page = get_page($parent_id);
  58.      $breadcrumbs[] = ‘<a href=»‘ . get_permalink($page->ID) . ‘»>’ . get_the_title($page->ID) . ‘</a>’;
  59.      $parent_id = $page->post_parent;
  60.      }
  61.      $breadcrumbs = array_reverse($breadcrumbs);
  62.      foreach ($breadcrumbs as $crumb) echo $crumb . ‘ ‘ . $delimiter . ‘ ‘;
  63.      if ($showCurrent == 1) echo $before . get_the_title() . $after;
  64.      } elseif ( is_search() ) {
  65.      echo $before . ‘Результаты поиска по запросу «‘ . get_search_query() . ‘»‘ . $after;
  66.      } elseif ( is_tag() ) {
  67.      echo $before . ‘Записи с тегом «‘ . single_tag_title(», false) . ‘»‘ . $after;
  68.      } elseif ( is_author() ) {
  69.      global $author;
  70.      $userdata = get_userdata($author);
  71.      echo $before . ‘Статьи автора ‘ . $userdata->display_name . $after;
  72.      } elseif ( is_404() ) {
  73.      echo $before . ‘Error 404’ . $after;
  74.      }
  75.      if ( get_query_var(‘paged’) ) {
  76.      if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ‘ (‘;
  77.      echo __(‘Page’) . ‘ ‘ . get_query_var(‘paged’);
  78.      if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ‘)’;
  79.      }
  80.      echo ‘</div>’;
  81.      }
  82.     } // end kod_breadcrumbs()

Далее добавьте следующий код в то место, где хотите выводить хлебные крошки. Я его добавил в файл single.php выше кода названия статей — перед the_title.

  1. <?php if (function_exists(‘kod_breadcrumbs’)) kod_breadcrumbs(); ?>

Замена плагина постраничной навигации «Pagenavi»

Без вывода кнопок с нумерацией страниц будет очень неудобно перемещаться по сайту, тем более, что постраничная навигация улучшает перелинковку сайта. Добавьте этот код в файл темы functions.php

  1.     function wp_corenavi() {
  2.      global $wp_query, $wp_rewrite;
  3.      $pages = »;
  4.      $max = $wp_query->max_num_pages;
  5.      if (!$current = get_query_var(‘paged’)) $current = 1;
  6.      $a[‘base’] = str_replace(999999999, ‘%#%’, get_pagenum_link(999999999));
  7.      $a[‘total’] = $max;
  8.      $a[‘current’] = $current;
  9.      $total = 0; //1 — выводить текст «Страница N из N», 0 — не выводить
  10.      $a[‘mid_size’] = 2; //сколько ссылок показывать слева и справа от текущей
  11.      $a[‘end_size’] = 5; //сколько ссылок показывать в начале и в конце
  12.      $a[‘prev_text’] = ‘&laquo; Предыдущая ‘; //текст ссылки «Предыдущая страница»
  13.      $a[‘next_text’] = ‘Следующая &raquo;’; //текст ссылки «Следующая страница»
  14.      if ($max > 1) echo ‘<div class=»paginator»>’;
  15.      if ($total == 1 && $max > 1) $pages = ‘<span class=»pages»>Страница ‘ . $current . ‘ из ‘ . $max . ‘</span>’.»rn»;
  16.      echo $pages . paginate_links($a);
  17.      if ($max > 1) echo ‘</div>’;
  18.     }

Далее добавьте код, где выводить список страниц. Для этого в следующих файлах вставляем код index.php, archive.php, category.php, tag.php и search.php.

  1. <div class=»paginator»><?php if (function_exists(‘wp_corenavi’)) wp_corenavi(); ?></div>

Вот небольшая подборка, с помощью которой можно облегчить сайт, заменив плагины кодом.


Похожие записи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Похожие записи: