G|Translate: English EN Deutsch DE Italiano IT Русский RU Español ES Українська UK

TSL плагины

4.6/5 - (12 голосов)

WordPress: плагин или изменение кода?

TSL плагины

На многих ресурсах предлагаю внести изменения в код в файле function.php, тем более, что WordPress позволяет сделать это через встроенный редактор.

Здесь добавили, тут поменяли – все отлично работает.

Насколько это хорошо?

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

Но – Вы можете поменять тему –  и все Ваши доработки пропадут. Ведь при смене темы, мы получим совершенно другой functions.php и все внесенные изменения будут потеряны, а вот плагин в системе останется, сколько тему не меняй. С этих соображений и нужно относится к файлу functions.php. Если добавляемый функционал относится не только к теме, но и к сайту в целом, то стоит задуматься о подключении его в виде плагина.

Установка изменений через плагины намного безопаснее. В WordPress есть встроенная система безопасности, которая контролирует корректную работу плагинов. Даже при смене версии PHP не происходит катастрофы, плагин переводится в неактивное состояние. И административная панель работает и сайт работает.

И что делать?
Есть 3-5 строчек кода, которые нужно разместить на сайте. И нет такого плагина в природе. Какой есть выход?

TSL плагины

Плагины от разработчика GoodWin. Список плагинов внизу страницы.

Пишу плагины потому что интересно. Раз – и WordPress начинает слушаться и делать то, что ему написали.

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

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

Начнем.

Плагин может быть личный (создается только для своего сайта), а может быть публичный (для общего пользования). Публичный плагин  выкладывается в репозиторий плагинов WordPress.

Требования к личному плагину, обычно минимальны – главное, что бы работал.

Для публичного плагина  нужна лицензия, поддержка, совместимость, локализация и прочее.  Лицензия сообщает пользователям, как они могут использовать код плагина в своих целях. Для поддержания совместимости с ядром WordPress рекомендуется выбрать лицензию, работающую с GNU General Public License (GPLv2+).

Создаем простой текстовый файл (в Nonepad++ , обычный блокнот Windows не надо использовать) и сохраняем его с расширением php. Сохраняем файл в UTF-8 (иначе будет крякозябры вместо русских букв). 

Например my-plugin.php

Внутри

<?php
/**
*Plugin Name: Мой  плагин
*/
//тут будет собственно полезный код
?>

В редакторе:

TSL плагины

Создаем папку с таким же названием my-plugin и через FTP закидываем на сервер в папку plugins.

Должно получиться так

wp-content/plugins/my-plugin/my-plugin.php

Если открыть административную панель WordPress – мы увидим наш “шедевр”.

TSL плагины

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

При активации возможна проблема:

“Плагин создал 3 символа неожиданного вывода при активации. Если возникнет ошибка “headers already sent” с RSS-лентами или иные проблемы, то попробуйте деактивировать или удалить этот плагин.”

TSL плагины

PHP-файлы должны быть записаны на сервер в определённой кодировке, в частности в UTF-8 без BOM. Именно символы BOM являются “символами неожиданного вывода”.

Решение крайне простое:
1. Открываем свой файл в редакторе “Notepad++” 
2. Выбираем пункт меню “Кодировки” -> “Преобразовать в UTF-8 (без BOM)”.
3. Сохраняем файл и заново размещаем на сервере.

Если ничего не помогает…. Где-то еще проблема в структуре файла, который создается русифицированной версией программы “Notepad++”.

Берем файл любого работающего плагина, удаляем весь код, оставляем “обвязку” файла, вставляем свой код, пишем свой заголовок и сохраняем под своим названием. 

Проблема решена.

Защита от запусков скриптов PHP все среды WordPress

ВАЖНО: необходимо предусмотреть невозможность запуска php скрипта вне WordPress. Это же обычный файл php и будут желающие его запустить на сервере через url браузера. Нужно добавить немного магии (переменная ABSPASH создается внутри WordPress и содержит путь к корню сервера с “/” на конце).

if ( ! defined( 'ABSPATH' ) ) {
    echo 'Мой плагин - инфо о плагине <br />';
    exit;
}

При отсутствии переменной ABSPASH сработает только это условие в начале плагина.

Запускаем файл плагина php  (вывод robots.txt в консоль)  по прямой ссылке.

Бинго.

Без WordPress получили заранее написанную информационную заставку.

TSL плагины

ВАЖНО: необходимо предусмотреть невозможность просмотра папки с плагинов. Да, у большинства хостеров папки закрыты настройками – но мы можем подстраховаться. В папку с плагином помещаем файл index.html, в котором напишем краткую информацию о плагине.

<html>
<!– Информация о плагине –>
Мой плагин - инфо о плагине <br />
</html>

Пытаемся сделать запрос к папке (откроется в новом окне)

Вежливый сервер запустил файл index.html от нашего плагина

Но роботов-подборщиков много (и названий плагинов тоже много) – жалко тратить ресурсы сервера PHP, что бы каждому показывать нашу заставку. Используем Apache – в папке /wp-content/plugins/ помещаем файл .htaccess с единственной записью

deny from all

Имеем прекрасный результат

TSL плагины

Но сам WordPress конечно продолжит нормальную работу – мы закрыли доступ к папке планинов для любопытных снаружи, а WP находится внутри (такая матрешка…).

TSL плагины

ВАЖНО: особое внимание для скрипта php, который обрабатывает обычную html форму. Его название и путь видно сразу из кода сайта (и название переменных тоже видно). Желающих его запустить напрямую (с какими-либо параметрами в url адресе) будет много. Если Ваш скрипт работает сам по себе (без WordPress) – предусмотрите существование глобальной переменной и проверяйте её в скрипте-обработчике.

<form action= "script.php" method= "POST"> 
<p>Имя:    <input type= "text" name= "name"> </p> 
<p>E-mail: <input type= "text" name= "email"></p> 
<p>Ваше сообщение: </p>
<p> <textarea name= "message"></textarea></p> 
<input name="valid_form" type="hidden" value="key">
<p><input type= "submit" value= "Отправить"></p>
</form>

Или как вариант – “скрытое текстовое поле”. Например переменную valid_form с заранее заданным значением key и типом hidden (в форме данная переменная не отображается).    И проверяйте эту переменную в скрипте. Если она есть – значит скрипт запущен как обработчик  формы.

Так как переменные из формы передаются методом “POST”,  использовать название этой переменной в методе “GET” через строку в URL не получится. В Вашем же скрипте PHP нет такой обработки:

$valid_form = $_GET['valid_form'];

Вернемся к нашему суперплагину.

Пример формата заголовка для публичного плагина.

<?php
/**
 * Plugin Name: Название плагина
 * Description: Описание плагина 
 * Plugin URI:  Страница (url) плагина
 * Author URI:  Страница (url) автора
 * Author:      Имя автора
 * Version:     Версия плагина, например 1.0
 *
 * Text Domain: Идентификатор перевода, указывается в load_plugin_textdomain()
 * Domain Path: Путь до файла перевода. 
 *
 * License:     GPL2
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 *
 * Network:     Укажите "true" для для мультисайтовой сборки.
 */
if ( ! defined( 'ABSPATH' ) ) { // проверка на запуск вне WordPress
   echo 'Мой плагин - инфо о плагине <br />'; 
   exit; 
}
//тут будет собственно полезный код 
?>

ВАЖНО: если Вы делаете плагин из своего кода, который ранее работал в fuction.php – не забудьте его убрать оттуда. В противном случае Ваш суперплагин активировать не получится – WordPress сообщит о дублировании функции.

ВАЖНО: если у Вас есть дополнительные файлы PHP в папке плагина – там функции WordPress автоматом работать не будут, необходимо их подключить вручную.

Использование плагина Query Monitor

TSL плагины

Крайне полезная вещь при разработке собственных плагинов. Показываем много полезной информации о работе системы, в том числе – ошибки выполнения кода PHP

Сам язык PHP допускает много вольностей, при которых всё будет работать:

  • не объявленная переменная
  • отсутствующие элементы массива
  • и прочие шалости

Код будет выполняться, сервер PHP будет за Вас “додумывать”, что именно хотел разработчик. Но это не хорошо сейчас и может стать причиной критичных ошибок в будущем.

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

 

 

Подпишитесь в VKontakte - нажмите кнопку
Подпишитесь в Telegram - нажмите кнопку
Наша группа ODNOKLASSNIKI

Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла




Пишите на электронную почту (тема и email будут добавлены автоматически в письмо)

В Вашем браузере должна быть настроена обработка ссылок mailto

site_post@bk.ru

или просто скопируйте адрес e-mail



Почитать в разделе

TSL плагины

WordPress: плагин или изменение кода? На многих ресурсах предлагаю внести изменения в код в файле function.php, тем более, что WordPress позволяет сделать это через встроенный редактор. Здесь добавили, тут поменяли - все отлично работает. Насколько это хорошо? Решив быстро текущую проблему, Вы можете получить проблемы в будущем.  Да, файл function.php задуман так, что бы при обновлении темы Ваши дополнения не терялись.  Но - Вы можете поменять тему -  и все Ваши доработки пропадут. Ведь при смене темы, мы получим совершенно другой functions.php и все внесенные изменения будут потеряны, а вот плагин в системе останется, сколько тему не меняй. С этих соображений и нужно относится к...
(Читать полностью...)

  • Всего статей в разделе: 12
  • Показано статей в списке: 12
  • Сортировка: название по алфавиту

Плагин анализа seo ключевых фраз в посте (backend)

Плагин позволяет проверить включение списка seo ключевых фраз в тексте поста/страницы. WopdPress плагин tsl-plugin-seo-text добавляет в просмотренную запись список последних семь публикаций в этой же рубрике. Назначение: Backend (для администратора сайта) Проблема:  Администратор не имел статистику включения ключевых фраз в тексте поста/страницы. Решение: Плагин tsl-plugin-seo-text добавляет информацию по ключевым фразам в тексте статистика использования анализ использования заголовков H2-H6 [sdm_download id="2762" fancy="1"] ВАЖНО: просьба обо всех найденных ошибках, предложениях, багах сообщать через форму обратной связи. Настройки: пока нет Обновления:...
(Читать полностью...)

Плагин анализа изображений в записи/странице (backend)

Для оптимизации картинок на странице нам необходимо иметь полную информацию по каждому изображению. WopdPress плагин tsl-plugin-ampel-seo-picture собирает информацию по изображениям на странице и выводит её в отдельном метабоксе внизу страницы. Дополнительно в правой панели добавляется метабокс для ускоренной навигации. ВАЖНО: Плагин в разработке. Часть функций не доделана. Все пожелания будут рассмотрены.   Проблема: Для увеличения скорости загрузки страницы необходимо оптимизировать изображения на странице. Встроенных средств WP явно не достаточно.  Более того - в WordPress можно выбрать "неиспользуемые" (они же не прикрепленные) медиаизображения и удалить их. Этого...
(Читать полностью...)

Плагин вывод тэгов фавикона в head сайта

Не во всех темах прописан в коде фавикон. Т.е. при наличии фавикона он нормально показывается браузером (если в корне сайта), но его иногда не видят поисковые роботы, т.к. он не указан в коде. WopdPress плагин tsl-plugin-head-favicon  добавляет ссылку link rel на файл фавикона в head сайта блокировка запуска плагина лихими хакерами вне пространства WordPress через url браузера по прямому пути (выводится информационная заглушка)   Проблема: Некоторые поисковые роботы и браузеры "не видят" favicon.ico на сайте без явного указания его в коде сайта. На многих темах в WordPress нет возможности указать в настройках размещение уже готового файла...
(Читать полностью...)

Плагин вывода анонсов постов в конце контента (frontend)

Как увеличить глубину просмотра сайта? Рецепт простой - надо предложить пользователю анонс похожих постов (т.е. в той же рубрике и того же автора) после прочтения текущей статьи. Будем в конце контента показывать пользователю список последних записей по такой же рубрике. WopdPress плагин tsl-plugin-out-list-posts добавляет в просмотренную запись список последних семь публикаций в этой же рубрике. Назначение: Frontend (для посетителей сайта) Проблема:  пользователь сразу не видит других постов автора, текущую статью которого он прочитал. Решение: Плагин tsl-plugin-out-list-posts добавляет список последних публикаций по данной рубрике (фильтр) по данному автору...
(Читать полностью...)

Плагин вывода списка авторов блога (виджет)

Плагин создает виджет для вывода списка авторов блога. WopdPress плагин tsl-plugin-list-author создает виджет со списком авторов блога. Авторы - это пользователи, у которых есть записи. Пользователь без записей не выводится. Назначение: Frontend (для посетителей сайта) Проблема:  плагинов вывода списка авторов много, это еще один :). Решение: Плагин tsl-plugin-list-author добавляет виджет для вывода в сайтбаре. [sdm_download id="2068" fancy="1"] Можно посмотреть на сайтах (открытие в новом окне): https://antontitov.ru/ https://imory.ru/ ВАЖНО: просьба обо всех найденных ошибках, предложениях, багах сообщать через форму обратной связи. Настройки: в настройках...
(Читать полностью...)

Плагин добавления вывода кода кнопок share42.com

Есть популярный сервис кнопок "поделиться" share42.com WopdPress плагин tsl-plugin-share42  добавляет код вызова скрипта в футер сайта блокировка запуска плагина лихими хакерами вне пространства WordPress через url браузера по прямому пути (выводится информационная заглушка)   Проблема: кнопки генерируется хорошие, но код запуска скрипта нужно добавлять вручную. И это добавление пропадет при обновлении темы. Неудобно. [sdm_download id="1230" fancy="1"] Решение: Плагин обеспечивает добавление кода вызова скрипта в футер сайта независимо от темы. ВАЖНО: просьба обо всех найденных ошибках, предложениях, багах сообщать через форму обратной...
(Читать полностью...)

Плагин добавления колонки featured image (миниатюра) в административной панели

Плагин добавляет колонку "Миниатюра" в административную панель при выводе страниц и записей. Плагин tsl-plugin-admin-thumb Обеспечивает наглядное представление списка featured image Проблема: В стандартном списке страниц / записей нет никакой информации по прикрепленным миниатюрам (есть они, нет их, какой размер у них размер). Для чего нужны миниатюры - читаем статью Миниатюры (thumbnails) записей и страниц WordPress Решение: Плагин обеспечивает наглядное представление списка featured image (большие по размерам миниатюры показываются крупнее) позволяет разработчику сайта легко и визуально контролировать размеры миниатюр.  Очевидно, если размер миниатюры более 30 Кб - то это...
(Читать полностью...)

Плагин закрытия путей JSON (список пользователей)

WordPress REST API (или коротко WP API) позволяет пользователям (HTTP Клиентам) удаленно взаимодействовать с сайтом: отправлять запросы и получать ответы. Ответы приходят в JSON формате. Так, например, можно получить посты, рубрики, комменты сайта и т.д. Без входа в админпанель. Кроме того, такие данные можно создавать/изменять/удалять. Делается все это через URL запросы, так называемые «маршруты». Можно создавать свое приложение для редактирования постов/страниц без использования админпанели. отправляете определенный URL вида mysite.ru/wp-json/....... получаете ответ в виде JSON (длинная текстовая строка в определенном формате) редактируете и при наличии логина/пароля...
(Читать полностью...)

Плагин корректировки вывода цен WooCommerce

Плагин TSL plugin WooCommerce price делает три полезные вещи: вывод "руб." рядом с ценой (исправляет ошибки вывода, которые "квадратик" на разных браузерах) вывод "по запросу", если цена на товар не указана на панели магазина добавляет статус товара "Есть/нет в наличии" [sdm_download id="1231" fancy="1"] ВАЖНО: просьба обо всех найденных ошибках, предложениях, багах сообщать через форму обратной связи. Настройки: пока нет Обновления: автоматического обновления пока нет - для ручного обновления необходимо зайти из административной панели на страницу плагина и скачать последнюю актуальную версию плагина. Установка...
(Читать полностью...)

Плагин метабокса консоли – вывод файла robots.txt

Вывод листинга файла robots.txt в консоли   Данный информационный метабокс выводит содержимое файла robots.txt в консоли для оперативного контроля. WopdPress плагин tsl-plugin-console-robots добавляет метабокс с информацией о содержимом robots.txt (и ответами сервера) в консоль административной панели сайта. Проблема: Не всегда удобно проверять содержимое robots.txt через адресную строку браузера. А регулярно проверять надо. Зачем? Вроде один раз настроили - и пусть работает. Да - но некоторые кривые плагины могут туда дописать свою информацию. Так почему-то решили разработчики. И дописывают, причем: криво ничего об этом не сообщая владельцу блога Роботы поисковых...
(Читать полностью...)

Плагин метабокса консоли – список зарегистрированных размеров изображений блога

Да, это  тот самый список, на основании которого WoprdPress при загрузке файла в медиатеку создает целых набор файлов разного размера из исходного файла. Данный информационный метабокс позволяет пресекать излишнюю фантазию разработчиков темы и плагинов (и в конечном счете экономит место на хостинге). WopdPress плагин tsl-plugin-console-list-size добавляет метабокс с информацией о зарегистрированных размерах изображений в консоль административной панели сайта. Проблема: В административной панели сайта на CMS WordPress нет информации о всех зарегистрированных размерах изображений (под которые будет производиться нарезка при загрузке медиафайлов). Решение: Плагин добавляет метабокс с...
(Читать полностью...)

Плагин создания sitemap.xml в корне сайта

Плагин создания sitemap.xml в корне сайта WopdPress плагин tsl-plugin-sitemap-xml обеспечивает генерацию физического файла sitemap.xml (в корне сайта) для страниц и постов при их создании и удалении. Проблема: Необходимость указывать в файле sitemap.xml только url страниц и постов без страниц архивов и пагинаций и без настроек. Необходимо выключить показ атрибута <lastmod> (который показывает роботам дату последнего изменения страницы) для лучшего продвижения. Решение: Генерацию физического файла sitemap.xml (в корне сайта) для страниц и постов при их создании и удалении. [sdm_download id="1233" fancy="1"] ВАЖНО: просьба обо всех найденных ошибках,...
(Читать полностью...)