Создать плагин для 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 .= ‘
После активации этого плагина, функция 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
Будет с чего начать
Малацца, проспамил :)
Код конечно же не безупречен, но все же работает. Спасибо автору.