Как правильно создавать WordPress плагины

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
Загрузка...

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

Этот материал не о том как создавать плагины для wordpress, а о том как правильно их использовать

Для примера возьмём плагин Contact Form 7, откроем исходный код главной страницы сайта, там где нет самой формы (будь это обратная связь или обратный звонок)

Обратите внимание, что стили, а так же JS скрипты подгружаются даже если нет формы, что совершенно неправильно. Вполне вероятно, что вместе с assets файлами, подгружаются и другие функции, включая sql запросы, тем самым нагружая хостинг, сервер, да и вообще увеличивая время загрузки сайта.

Как создавать правильно?

Если вы создаёте плагин, который работает исключительно на главной странице или в корзине woocommerce, нужно использовать соответствующие функции. Пример:

<?php
//Код будет загружаться либо на главной странице, либо в корзине товаров Woocommerce

if(is_main() or is_cart()){
//Подгружаем assets файлы
}

?>

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

<?php
/*
Plugin Name: Тестовый плагин
Author: Alexey Ivanov
*/
class test_plugin{

private $db;

  public function __construct(){
  
    global $wpdb;
    
    $this->db=$wpdb;
  
    add_action('plugin_loaded',array($this,$this->load()));
  
  }
  
  public function load(){
  
    // Если это главная страница или корзина, подгружаем assets файлы и делаем запрос к БД
  
    if(is_main() or is_cart() or is_checkout()){
  
      $this->assets();
      
      $this->get_content();
      
    }
  
  }
  
  private function get_content(){

    $res=$this->wpdb->get_results("select * from `wp_posts`");
        
    return $res;
    
  }
  
  public function assets(){
  
  
  
  }
  
}

new test_plugin;
  
?>

Если плагин работает как шорткод, то стили и js файлы нужно подключать при условие использования самого шорткода. Приведу пример:

add_shortcode('my_shortcode', 'my_shortcode_func');
function my_shortcode_func($atts, $content){
  add_action('wp_head','my_shortocde_assets');
  return $content;
}

Backend и Fronted

Начнём с того, что не стоит подключать функции админ.панели в fronted сайта, и уж тем более использовать их не по назначению.

Если функционал большой, создайте два класса, один для frontend, а другой для админки, и используйте конструкцию вида:

if(is_admin()){
  include 'admin_class.php';
}
if(is_checkout()){
  include 'fronted_class.php';
}

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

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

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

*
*