Несколько лет назад, когда я только начинал создавать плагины для WordPress, я столкнулся с одним очень интересным небольшим упражнением, которое научило меня основам создания плагинов. Я начал с очень простой идеи: создать удобный маленький плагин, который случайным образом генерирует цитату для описания текущей темы. Сегодня я вернусь к плагину, который помог мне, проведя вас, друзья, по процессу его создания.
Минимальные знания, необходимые для этого руководства – базовые знания PHP (это предназначено для начинающих, которые хотят заняться разработкой плагинов).
Цель этого урока: создать плагин, который будет случайным образом генерировать цитату при каждой перезагрузке страницы. После того, как плагин будет активирован в разделе Плагины, он будет тихонько работать. Он не создает никаких лишних файлов, так что нам не нужна будет процедура деинсталляции плагина.
Шаг 1. Базовая информация о плагине
Следующие строки кода сообщают WordPress о том, что вы создаете – "плагин". В принципе, все, что WordPress требует - имя плагина. Порядок строк не важен, но вы заметите много знакомого в этой "шапке", если вы когда-либо создавали шаблон страницы или тему. Файл должен быть в кодировке UTF-8.
1 2 3 4 5 6 7 8 | /* Plugin Name: Adam's random quote Version: 0.1 Plugin URI: http://burucs.com Description: Replaces the site's description with a random quote Author: Adam Burucs Author URI: http://burucs.com */ |
Шаг 2. Функция генерации
Наша первая функциональная часть кода – функция генерации. Она состоит из локального одномерного массива, заполненного разнообразными цитатами, и в конце мы случайным образом выбираем цитату. Для этого мы используем встроенную PHP функцию rand. Обратите внимание, что начальное и последнее значение входит в диапазон для генерирования.
В соответствии с подробными стандартами разработки WordPress, мы должны использовать следующее правило в названиях: две маленьких буквы-монограммы автора и аббревиатура имени плагина.
1 2 3 4 5 6 7 8 9 10 11 | function ab_arq_generate() { $quotes = array ( 'Silence is golden.' , 'Nothing is what it looks like.' , 'Make everything right!' , 'Better late than never.' , 'Seeing is believing.' ); return $quotes [rand(0, count ( $quotes )-1)]; } |
Шаг 3. Функция, которая заменяет стандартное описание цитатой
В этом блоке мы используем вспомогательную функцию, которая удаляет то, что было записано перед этим функцией ядра.
1 2 3 4 5 6 | function ab_arq_change_bloginfo( $text , $show ) { if ( 'description' == $show ) { $text = ab_arq_generate(); } return $text ; } |
Шаг 4. Использование системы фильтров
Система фильтров – важный принцип в фундаментальном мире WordPress. Фильтры – это функции, за которые ваш плагин может зацепиться, чтобы изменить данные. В нашем случае с помощью этой возможности мы переопределяем стандартное описание текущей темы. Нам нужно использовать функцию bloginfo.
1 | add_filter( 'bloginfo' , 'ab_arq_change_bloginfo' , 10, 2 ); |
Шаг 5. Полный код
Вот конечный результат того, что мы делали в этом простом уроке.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /* Plugin Name: Adam's random quote Version: 0.1 Plugin URI: http://burucs.com Description: Replaces the site's description with a random quote Author: Adam Burucs Author URI: http://burucs.com */ function ab_arq_generate() { $quotes = array ( 'Silence is golden.' , 'Nothing is what it looks like.' , 'Make everything right!' , 'Better late than never.' , 'Seeing is believing.' ); return $quotes [rand(0, count ( $quotes )-1)]; } function ab_arq_change_bloginfo( $text , $show ) { if ( 'description' == $show ) { $text = ab_arq_generate(); } return $text ; } add_filter( 'bloginfo' , 'ab_arq_change_bloginfo' , 10, 2 ); |
Шаг 6. Бонусный совет
Я показал вам основы для создания этого плагина, но вы можете расширить его разными способами, если захотите.
Например: что если нам нужно будет больше цитат? Мы можем выбрать один из вариантов.
Первый: мы можем создать дополнительный php файл с массивом, и включить его в плагин.
Второй: использовать определенную таблицу базы данных.
Третий: получить данные от удаленного сервера (немного больше возможностей в разработке).
Обратите внимание, что если вы выберете вариант с отдельной таблицей, вам нужно создать хорошую, отдельную функцию удаления в вашем плагине.
Комментарии к записи: 4
По факту плагина нет. Куча рассуждений, 0 файлов.
хотелось бы увидеть его в действии, для начала ))
зашел за плагином — ушел без плагина…
Попробуйте вот этот плагин: XmasB Quotes. Лично я им и пользуюсь.