Пишем Вордпрес плагин. часть 4. Шорткоды
- 21 Июн 2011
С версии Вордпрес 2.5 появились шорткоды (shortcode) — набор простых функций для создания и вставки исполнимого кода в контент.
Например, если нам часто нужно вставлять статистику блога в текст своих постов, то что бы каждый раз не подсчитывать ее вручную мы можем написать функцию и назначить шорткод для вызова этой функции.
Простой шорткод выглядит так:
[stat]
А так можно создать шорткод [stat] который будет вызывать функцию mystat_shortcode()
function mystat_shortcode(){ $numposts = $wpdb->get_var(" SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish'"); if (0 < $numposts) $numposts = number_format($numposts); return "В блоге уже ".$statistic." постов."; } add_shortcode('mystat','mystat_shortcode');
Для проверки код выше нужно вставить в файл function.php вашей темы, и в посте написать [stat].
Также шорткоды могут быть частю плагина
Если Вы используете много разных шорткодов, то можно написать простенький плагин, который будет выводить список всех доступных шорткодов в вашем блоге.
Следующий код сохраняем в файле, например, show-shortcode.php в папке плагинов вашего блога, затем в админке блога активируем плагин.
<?php /* Plugin Name: Show Shortcodes Plugin URI: Description: This plugin show you info about avaliable shortcodes Author: Karlkori Version: 1.0 Author URI: */ // создаем виджет в разделе редактирования постов и страниц в котором будет выводится // информация функцией show_shortcodes_main_box() function shortcodes_help() { add_meta_box('show_shortcodes','Show Shortcodes','get_allshortcodes','page','side','low'); add_meta_box('show_shortcodes','Show Shortcodes','get_allshortcodes','post','side','low'); } // эта функция выводит список всех доступных шорткодов function get_allshortcodes() { global $shortcode_tags; foreach ($shortcode_tags as $tag => $func) { echo "<p>"; echo $tag; echo "</p>"; } } add_action('admin_menu', 'shortcodes_help'); ?>

После активации плагина выбираем любой пост для редактирования и любуемся результатом.
Использование атрибутов в шорткодах.
[mygallery name='Мои фотки' id=1]
Здесь атрибуты name и id передаются в функцию отвечающую за роботу шорткода.
function mygallery_shortcode( $atts ){ //здесь мы получаем значение атрибутов или назначаем значение по умолчанию. extract( shortcode_atts( array( 'name' => ' ','id' => 1, ), $atts ) ); return "Имя галереи: $name, Id галереи: $id"; } add_shortcode('mygallery', 'mygallery_shortcode');
Парные шорткоды и контент между ними.
Например, нам захотелось выделять в блоге текст
разными стилями (изменить цвет фона, текста, добавить рамку…),
напишем для этого шорткод, например, такого вида:
[myblock type='info'] Информационный блок [/myblock]
В файл function.php добавим код:
function myblock_shortcode( $atts, $content=null ) { extract(shortcode_atts(array( 'type' => 'info' ), $atts)); return "<div class=".$type.">".$content."</div>"; } add_shortcode('myblock', 'myblock_shortcode');
А в файле стилей вашей темы опишем разные стили оформления блоков, например:
.info { background-color: #0000ff; color: #ffffff; } .error { background-color: #ff0000; color: #ffffff; }