Cоздаем простой плагин для WordPress
В данном уроке мы создадим плагин WordPress, который можно использовать в качестве шаблона в других проектах. Также будет рассмотрен очень популярный вопрос - создание "коротких кодов". "Короткие коды" существенно облегчают процесс публикации различных материалов на сайте под управлением WordPress.
Учебный плагин будет называться “Shortcodes Toolbox”.
1. Презентация плагина и структура файлов
Начиная с версии 2.5 в WordPress введена API коротких кодов - простой набор функций для создания макросов, используемых при публикации записей и страниц. Плагин ”Shortcodes Toolbox” будет позволять добавлять короткие коды в материалы WordPress. так можно будет добавлять кнопки, ссылки, связывать записи между собой и многое другое без знания HTML или CSS.
Сначала нам нужно построить файловую структуру. Создаем папку shortcodes-toolbox, в которой создаем файл shortcodes-toolbox.php.
2. Основная информация о плагине
Для того, чтобы создать плагин WordPress, нужно соблюдать несколько простых правил. Самый важный шаг - добавить информацию о плагине. Добавляем в наш файл shortcodes-toolbox.php следующие строки:
<?php /* Plugin Name: Наименование плагина Plugin URI: http://URI_страницы_с_описанием_плагина Description: Краткое описание плагина Version: Номер версии плагина, например, 1.0 Author: Имя автора плагина Author URI: http://URI_страницы_автора_плагина License: тип лицензии плагина, например, GPL2 */ ?>
Если вы планируете размещать плагин в официальном репозитории WordPress.org, то нужно следовать описанию. Для персонального использования достаточно внесения информации о плагине.
3. Определение путей к файлам
Теперь настало время для кодирования PHP. Сначала нам нужно определить пути для файлов CSS или JS, которые будут использовать в плагине. Для нашего примера мы создадим файл style.css и поместим его в папку css, которая будет располагаться в папке нашего плагина. То есть нам нужно сформировать путь shortcodes-toolbox/css/style.css
Продолжаем вносить изменения в файл shortcodes-toolbox.php и добавим пути WP:
if(!defined('WP_CONTENT_URL')) define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); if(!defined('WP_CONTENT_DIR')) define('WP_CONTENT_DIR', ABSPATH . 'wp-content'); if(!defined('WP_PLUGIN_URL')) define('WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins'); if(!defined('WP_PLUGIN_DIR')) define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins'); class STbox { function cssStyles() { $stPath = WP_PLUGIN_URL.'/'.plugin_basename(dirname(__FILE__)).'/styles/'.'/'; echo '<link rel="stylesheet" type="text/css" media="screen" href="' . $stPath . 'style.css" />'."\n"; } }
4. Функционал плагина
Теперь можно заняться основной частью плагина. Для нашего примера добавим функционал для размещения в материалах ссылок, пользовательской кнопки загрузки (которая стилизуется с помощью CSS) и ссылок на связанные записи. Здесь используется только базовый набор функций, который вы можете расширить так, как нужно.
Добавим код PHP в файл shortcodes-toolbox.php:
/* Функция простой ссылки */ function URL($atts, $content = null) { extract(shortcode_atts(array( "url" => 'http://' ), $atts)); return '<a href="'.$url.'">'.$content.'</a>'; } /* Функция для кнопки загрузки с использованием стилизации в CSS */ function DownloadButton($atts, $content = null) { extract(shortcode_atts(array( "url" => 'http://', "color" => '' ), $atts)); return '<a class="'.$color.'" href="'.$url.'">'.$content.'</a>'; } /* Функция для ссылки на связанные записи */ function RelatedPosts( $atts ) { extract(shortcode_atts(array( 'limit' => '5', ), $atts)); global $wpdb, $post, $table_prefix; if ($post->ID) { $retval = '<ul>'; // Получаем метку $tags = wp_get_post_tags($post->ID); $tagsarray = array(); foreach ($tags as $tag) { $tagsarray[] = $tag->term_id; } $tagslist = implode(',', $tagsarray); // Выполняем запрос $q = "SELECT p.*, count(tr.object_id) as count FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < NOW() GROUP BY tr.object_id ORDER BY count DESC, p.post_date_gmt DESC LIMIT $limit;"; $related = $wpdb->get_results($q); if ( $related ) { foreach($related as $r) { $retval .= '<li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>'; } } else { $retval .= ' <li>Нет связанных материалов.</li>'; } $retval .= '</ul>'; return $retval; } return; }
Итак, мы добавили 3 функции несколькими строчками кода.
5. Действия и короткие коды
Прежде, чем приступить к тестированию плагина нужно добавить действия и определить короткие коды, которые мы будем использовать. Добавим следующие строки в файл shortcodes-toolbox.php:
if (class_exists("STbox")) { $dl_plugin = new STbox(); } //Дейстивя if (isset($dl_plugin)) { //Добавляем действие в нижний колонтитул add_action('wp_footer', array(&$dl_plugin, 'cssStyles')); //Добавляем определение CSS и JS в раздел нижнего колонтитула } add_shortcode('link', 'URL'); add_shortcode('DownloadButton', 'DownloadButton'); add_shortcode('RelatedPosts', 'RelatedPosts'); ?>
Основная часть нашего плагина готова. Сохраняем изменения и открываем файл style.css.
6. Стили CSS
Для формирования симпатичных кнопок загрузки нужно добавить стили CSS. Открываем файл style.css и добавляем следующие строки:
.green a:link, .green a:visited{ color:#ffffff; text-decoration:none !important; } .black a:link, .black a:visited{ color:#ffffff; text-decoration:none !important; } .green a:hover, .black:hover{ color:#ffffff; text-decoration:none !important; } .green { display: inline-block; font-weight:bold; font-size:1.2em; background : -webkit-gradient(linear, left top, left bottom, from(#88c841), to(#73b338)); background : -moz-linear-gradient(center top, #88c841, #73b338); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; padding: 5px 20px; text-align: center; -shadow: 0px 1px 0px #6c0909; color:#ffffff !important; text-decoration:none !important; } .green:hover { background : -webkit-gradient(linear, left top, left bottom, from(#73b338), to(#88c841)); background : -moz-linear-gradient(center top, #73b338, #88c841); color:#ffffff !important; text-decoration:none !important; } .black { display: inline-block; font-weight:bold; font-size:1.2em; background : -webkit-gradient(linear, left top, left bottom, from(#000000), to(#414141)); background : -moz-linear-gradient(center top, #414141, #000000); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; padding: 5px 20px; text-align: center; -shadow: 0px 1px 0px #6c0909; color:#ffffff !important; text-decoration:none !important; } .black:hover { background : -webkit-gradient(linear, left top, left bottom, from(#414141), to(#000000)); background : -moz-linear-gradient(center top, #000000, #414141); color:#ffffff !important; text-decoration:none !important; }
7. Установка и тестирование
Теперь попробуем новый плагин в деле. Создаем архив zip, в который помещаем папку shortcodes-toolbox. Затем загружаем его в WordPress с помощью панели администратора (Плагины->Загрузить). После установки плагина создаем новую запись или страницу и добавляем следующие строки для проверки:
[DownloadButton url="http://www.google.com" color="black"]Download Google Chrome[/DownloadButton] [link href="http://www.yahoo.com"]Yahoo[/link]
Сохраняем материал. В нем размещается кнопка загрузки и ссылка, для вставки которых нужно лишь вставить короткий код.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/o0YdNz0JQpQ/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-05-06 » Как настраивать конверсионные стратегии: работа над ошибками
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
- 2024-04-22 » Цифровой маркетинг: инструменты для продвижения и рекламы в 2024 году
- 2024-04-22 » Что такое CSS-модули и зачем они нам?
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
Бог тянет за одну руку, а черт - за обе ноги Буш Вильгельм - (1832-1908) - немецкий поэт и художник |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.