Создать плагин для WP — просто!
Вот так всегда, когда не знаешь какого-либо предмета, кажется, что там всё жутко сложно и непонятно. И, как всегда, пока я не сталкивался с проблемой модификации WP на уровне более глубоком, чем редактирование тем, я даж и не думал ковыряться в деле написания плагинов и вообще — ковыряния в движке.
А когда появилась реальная нужда — пришлось исследовать вопрос и оказалось, что там сё просто как валенок :)
Грубо говоря — создается php-файл в папке plugins, в начале файла пишется комментарий по вот такому шаблону:
/*
Plugin Name: Show Near Posts
Plugin URI: http://leksus.info/
Description: Плагин, просто Плагин.
Author: leksus
Version: 1.0
Author URI: http://leksus.info/
*/
Главным тут является название плагина, которое будет отображаться в админке WP, остальное по вкусу.
После него пишутся любые функции, которые нам могут понадобиться. И не забыть в админке активировать свой плагин.
Лучше показать всё на примерах.
Скажем, хотим мы сделать выборку определенную.. ну, к примеру, все аттачменты, в дескрипшене которых есть определенное слово. И вывести ссылки на них в сайдбаре.
function get_att_descr ($word) {
//доступ к бд
global $wpdb;
//запрос
$q = «select post_title, guid from «.$wpdb->posts.» where post_type = ‘attachment’ and post_content like ‘%».$word.»%'»;
//сохраняем результаты в переменную
$res = $wpdb->get_results($q);
//если нет результатов — возвращаем false
if (count($res) == 0) return false;
$echo_res = »;
//формируем список ссылок на аттачи с определенным словом в описании
foreach ($res as $attach) $echo_res .= ‘<li><a href=\».$attach->guid.’\’>’.$attach->post_title.'</a></li>’;
return $echo_res;
}
После активации этого плагина, функция get_att_descr будет доступна в любом месте шаблона, то есть, можно её вызвать в том же сайдбаре:
if ($echo_values = get_att_descr ("e;порно"e;)) echo $echo_values;
Это мы добавили свою пользовательскую функцию, которую впоследствии использовали.
А если нам надо изменить вид поста при выводе (или при постинге)? Для этого существуют фильтры. По сути, всё тоже самое, тока функция, которую мы написали, «вклинивается» в процесс вывода (или постинга), что-нить делает с полученными данными (или как-то реагирует в зависимости от них), и отправляет данные дальше.
К примеру, нам надо при выводе заменять слово «хуй» на звёздочки — ***.
Пишем простейшую функцию.
function no_mat ($content) {
$content = preg_replace (‘/хуй/’, ‘***’, $content);
return $content;
}
А потом ставим фильтр:
add_filter (‘the_content’, ‘no_mat’);
add_filter: первый аргумент — к какой функции мы привязываем наш фильтр, второй — собственно, сама функция. Всё, что функция the_content возвращает, она отдает функции no_mat, которая, в свою очередь, после обработки, отдаёт содержимое обратно.
Помимо add_filter, есть еще другие варианты вклиниваться в процессы WP.
Всё, что написано выше, справедливо для написания плагина для своих нужд. Если писать плагин для распространения, придётся еще писать функции настройки плагина для отображения в админке (не каждый может поменять переменную в php-файле плагина), возможно, добавлять дополнительные файлы, делать возможность подключения переводов плагина и прочая чешуйня.
Суровым программерам такие излишества не нужны :)
Про написание плагинов намного более подробно — на сайте WP: http://codex.wordpress.org/Plugin_Resources
Неплохой блог, и материал, тоже ничего :)
[Ответить]
как раз искал про плагины инфу)
[Ответить]
Спасибо за совет!
[Ответить]
Интересная информация.
Как раз начал копать тему написания плагинов для WP
Будет с чего начать
[Ответить]
leksus Reply:
марта 5, 2012 at 12:58
Малацца, проспамил :)
[Ответить]
Код конечно же не безупречен, но все же работает. Спасибо автору.
[Ответить]