Пишем Вордпрес плагин. часть 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;
}

Что вы думаете?

Имя обязательно

Сайт