Как написать плагин для WordPress
Проще пареной репы! Не нужно быть семи пядей во лбу, достаточно начальных знаний PHP и API WordPress.
Плагин состоит как бы из двух частей: заголовка, по которому движок определяет, что это плагин и получает дополнительную информацию, и программной части.
Заголовок имеет вид
/* Plugin Name: Имя плагина Plugin URI: Адрес, по которому можно найти инструкцию и прочую инфу по плагину. Description: Краткое описание того, что плагин должен делать Author: Имя автора Version: Версия и, возможно, дата создания. Author URI: Сайт автора плагина */
и должен располагаться в начале файла плагина.
Программная часть в свою очередь имеет как бы две части: интерфейсную и собственно программу. В интерфейсной части описывается взаимодействие с API.
API WordPress представляет собой набор «хуков» — точек программного прерывания (крючков, на которых можно повеситься :)). Или, если по-простому, в специальных местах скриптов движка вызываются определенные пользователем функции. Хуки бывают двух типов: «действия» (action) и «фильтры» (filter). Разница в том, что «фильтры» могут быть вызваны в любом месте движка или плагинов, они принимают на вход какие-то данные, обрабатывают их и возвращают обратно. «Действия» вызываются по достижению определенного этапа выполнения программы, они ничего не возвращают, только выполняют какие-то операции. Список хуков ищите в Кодексе и в кодах движка.
Теперь простенький пример. Допустим, нам надо что-то поменять в тексте поста перед выводом. Для этого идеально подходит хук ‘the_content’. Привязываем свою функцию к этому хуку
add_filter('the_content','my_dummy_function');
Позаботьтесь о том, чтобы имя вашей функции было уникальным, т.е. не совпадало с именем какой-либо функции php, движка или другого плагина.
Теперь пишем саму функцию обработки.
function my_dummy_function($content) { $content = str_replace('в', 'фф', $content); return $content; }
Получили на вход $content — обработали — вернули.
В результате объединения трех частей получаем
<?php /* Plugin Name: Dummy Plugin URI: https://blog.portal.kharkov.ua/2009/05/09/plugin/ Description: Заменяет "в" на "фф" Author: Ю.Б. Version: V1.0 Author URI: https://blog.portal.kharkov.ua/ */ add_filter('the_content','my_dummy_function'); function my_dummy_function($content) { $content = str_replace('в', 'фф', $content); return $content; } ?>
сохраняем в файл, допустим, my_dummy_plugin.php, копируем его в папку /wp-content/plugins/, в админке активируем свой плагин и наслаждаемся результатам. Если, конечно, походя ничего не накосячили.
Не забываем, что <?php должно быть в самом начале файла, никаких пробелов, пустых строк, BOM и прочей ерунды перед ним быть не должно. После ?> — тоже. Кодировка — UTF-8.
Разумеется, эта микроинструкция не является полным и исчерпывающим руководством. Ее задача показать направление и избавить будущего плагинописателя от страха перед страшными словами плагин, API, хук и т.д.
Подскажите, как вывести контент такого содержания с помощью шорткода?
: ID, ‘price’, true); ?>
Извините, код некорректно отобразился:
: ID, 'price', true); ?>
Ну не любит WP коды 🙂
Если Вы имели в виду get_post_meta(), то как-то так:
add_shortcode('post_meta', 'shortcode_post_meta');
function shortcode_post_meta( $atts ) {
$txt = get_post_meta( $atts['id'], $atts['key'], true );
return $txt;
}
Сам шорткод [post_meta id='1234', key='price']
Остальное как для любого плагина.
Подробности в Кодексе ru:Shortcode API
Да, верно поняли. Беда в том, что я хочу вывести произвольные поля. Вот так работает:
function rmcc_basket_single_product_parameters_shortcode() {
global $post;
return » . __(«Title», «simple_basket») . ‘: ‘ . get_post_meta($post->ID, «title», true) . »;
}
add_shortcode(‘basket-single-product’, ‘rmcc_basket_single_product_parameters_shortcode’);
А когда хочу добавить еще произвольное поле, выдает ошибку:(
Все разобрался, надо писать:
return » . __(«Title», «simple_basket») . ‘: ‘ . get_post_meta($post->ID, «title», true) . ‘
‘ . __(«Price», «simple_basket») . ‘: ‘ . get_post_meta($post->ID, «price», true) . ‘;
Не плохо… но хотелось бы побольше информации об этом
Здравствуйте.
Я бы хотел попросить Вас помочь в написании плагина по обьединению регистрации WP и phpbb. Я перелопатил весь интернет и узнал, что такого рода плагин уже существует и назыв. wphpbb-login но найти его для скачивания я не смог т.к. официальный сайт плагина закрылся.
Заранее благодарен.
Извините, но мне совершенно не интересно сращивать ежа и ужа. Тем более, если, как Вы говорите, плагин уже существует. Ну закрылся офф.сайт плагина, и что? Если плагин работоспособный, то точно у кого-то есть. По форумам поспрашивайте, в т.ч. phpбубушных.
UPD Результат 5 минут гугления — http://www.wp-united.com/