Вот так всегда, когда не знаешь какого-либо предмета, кажется, что там всё жутко сложно и непонятно. И, как всегда, пока я не сталкивался с проблемой модификации 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
2 комментария
CNN
марта 12, 2010 at 12:41
1Неплохой блог, и материал, тоже ничего :)
[Ответить]
zo0m
апреля 9, 2010 at 23:10
2как раз искал про плагины инфу)
[Ответить]
Подписаться на RSS комментариев этого поста · TrackBack URI
Есть что сказать - говори:
Подпишись на обновления:
Разделы
Былое
Ссылки
Стать чуть ближе
Календарь