Пишем плагин для WordPress самостоятельно

Начну сразу с краткой постановки задачи или того, что мой плагин должен реализовывать: это будет простая защита от автоматического добавления сообщений в виде обычной галочки типа "Я не спамер". Также будет присутствовать поддержка стандратной локализации на русский и другие языки, с английским по умолчанию. По поводу рассуждений о целесообразности данного расширения просьба дискуссии не разводить в силу того, что это пример учебный.

Понадобятся:

  • Установленный дистрибутив WordPress, забитый N-м количеством статей.
  • Базовые знания серверного языка программирования под всем знакомым названием PHP.
  • Усидчивость и чуть-чуть терпения.

Про HTML/CSS не говорю, - это по default должно иметься.

Итак, пошаговые действия следующие:

  1. По пути расположения CMS-ки в wp-content/plugins создадите папку со звучным именем "nospamcheckbox".
  2. Далее заготавливаем одноименный PHP-файл. Прописываем заголовочную информацию в таком вот виде:
    /*
    Plugin Name: No Spam Checkbox
    Plugin URI: http://druweb.ru/wordpress-create-plugin
    Description: Примитивная защита от ... догадайтесь чего
    Version: 1.0.0
    Author: Владимир
    Author URI: http://druweb.ru
    */ 
    
    Таким образом я заполнил поля: наименование расширения, URL плагина, его описание, версию продукта, имя автора, ссылку на сайт разработчика.
  3. Опишу функцию вывода чекбокса в окно браузера:
    function nsc_checkbox($id) {
      if (!is_user_logged_in()) : //если зашел аноним, гость неавторизванный
        print '<input style="width:auto;" type="checkbox" name="nospam" value="1">' 
              . __("I'm not a spammer", 'nsc'); //"домен" nsc, можете по-своему набрать
      endif;
    }
    
    Поясняю, т.о. идет подгрузка перевода:
    <?php __('Текст', 'Идентификатор, домен для перевода'); ?>
    Пока обзову это так, пожалуй. Подробнее на данном аспекте как-нибудь попозже оставновлюсь (в новой заметке).
  4. Теперь дело за обработкой с помощью POST-метода:
    function nsc_result($id) {
      if (!is_user_logged_in()) :
        if (!$_POST['nospam']) : //не прошел тест?
          //статус сообщения: в корзину
          $updated_status = 'trash';
          wp_set_comment_status($id, $updated_status);
          //выведем строгое предупреждение
          wp_die( __('You are trying to leave the spam message!', 'nsc') );
        endif;
      endif;
    }
    
  5. Далее добавляю всё, что было выше в виде действий:
    add_action('comment_form', 'nsc_checkbox');
    add_action('comment_post', 'nsc_result');
    Здесь идут хуки-крючки на форму отправки и публикацию комментария.
  6. Наконец последний штрих: подключение файла с переводом на кириллицу, используя относительный путь:
    load_plugin_textdomain( 'nsc', false, '/'.basename(dirname(__FILE__)).'/languages' );
    
  7. Всё на 90% готово. Исключение, осталось подготовить плагин к культурному переводу на языки, отличные от английского. Но этим я займусь в следующей статье.




© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.