Здравствуйте! с вами Павел. И первое, чтобы бы мне хотелось сделать - так это извиниться что пишу не так часто, как хотелось бы. К сожалению (или нет) но последнее время слишком много работы, и писать новые статьи совершенно не успеваю. Но пока WordPress пользуется популярностью - статьи выходить будут, по крайней мере раз в неделю.
И вот, решил опубликовать серию статей посвященных шордкодам. Тема заезженная до дыр, и уверен что в каждом блоге посвященному WP можно найти подобную статью. Но все же, начинать писать более "продвинутые" статьи без каких либо азов и понятий будет не правильно. Поэтому первую статью, я посвящу азам данного направления и простым примерам. А в следующих статьях данной темы, мы постараемся скрестить шорткод с модулем написанным в одной из предыдущих тем.
Шотрткод (как я его понимаю) - это пользовательский BB тег, который можно вставить в статью, страницу или код сайта с последующей его заменой на какую либо другую информацию программным способом.
В определениях я не селен. Но вижу я это примерно так как написал выше. А ниже, постараюсь расписать почему я так считаю.
Примеры шорткодов:
[my-short-code] - "пустой" шорткод
[sh color="red"] - шорткод с дополнительным параметром (атрибутом/свойством)
[some_text size="20px" style="bold"]текст для шорткода[/some_text] - шорткод с параметрами и текстом.
Пожалуй вот и все возможные варианты.
Идей для их применений масса. И первое что мне пришло в голову - это вставка рекламных объявлений через эти коды (но об этом поговорим в следующих статьях). А сейчас рассмотрим простые примеры с "Hello World" и тому подобным.
Пример первый. Вместо шорткода, нам нужно отображать приветствие к читателям сайта в начале каждой статьи. При этом, используя атрибут "id", можно выбирать какой либо из готовых, ранее предустановленных приветствий.
В качестве такого шорткода будем использовать - [hello id="x"]. Где "id" - номер приветствия.
Чтобы его создать, открываем файл "functions.php", и в самый конец файла (хотя это не принципиально), добавляем следующий код:
function wp2fl_hello($attr)
{
$ar = array(
'Привет, с Вами ...',
'Здравствуйте, с Вами снова ...',
'Приветствую, на связи ...',
'Рад видеть Вас в очередной раз на своем сайте ...',
'И опять я...',
'И т.д. и.п.',
);
return isset($ar[$attr['id']]) ? $ar[$attr['id']] : array_shift($ar);
}
add_shortcode('hello', 'wp2fl_hello');
где «add_shortcode» хук, позволяющий добавлять шорткоды. Функция, подключаемая к хуку, может принимать два параметра. Первый — массив атрибутов, второй — текст шорткода.
А для того что бы проверить работу нашего шорткода, достаточно, в статье или странице — вставить код [hello id="2"], сохранить ее, перейти на front end, перезагрузить и глянуть результат.
Пример второй. Используя шорткод, нужно отображать рандомно (или случайно) изображение в какой либо части статьи.
В качестве шорткода будем использовать «[rand-img]». А его код, будет иметь следующий вид:
function wp2fl_rand_img()
{
$ar = array(
'/_images/1.jpg',
'/_images/2.jpg',
'/_images/3.jpg',
'/_images/4.jpg',
'/_images/5.jpg',
);
$i = rand(0, sizeof($ar)-1);
if(isset($ar[$i]))
{
return '<img src="'.$ar[$i].'">';
}
return '';
}
add_shortcode('rand-img', 'wp2fl_rand_img');
Пример третий. Используя шорткод, нам нужно оформлять текст заданным образом применяя стили оформления. Пример кода:
function wp2fl_style($attr, $content)
{
return '<span style="color:red; font-weight:bold">'.$content.'</span>';
}
add_shortcode('style', 'wp2fl_style');
Во втором и третьем случае, принцип тестирования аналогичный первому - вводим шорткод в статью, а на фронтенде проверяем результат.
На этом все.
А в следующей статье, вы сможете узнать как используя шорткод считать RSS ленту другого сайта, и отобразить полученную информацию в своей статье.

Здравствуй, а шорткод рандом выводит картинки после перезагрузки страницы, как я понял?
А вот если выводить определенную картинку, к определенному дню? Например, к праздникам свои картинки к каждому. Я думаю не сложный код, даже элементарный. С шорткодом удобней просто, чем скриптом.
Здравствуйте, Егор!
Да, вывод картинки по праздникам реализовать тоже очень просто. Вам нужно будет заранее, сопоставить массив дат нужным картинкам, типа:
["03-08"] => 'img1.jpg',
["mm-dd"] => 'img2.jpg',
и сравнивать с текущей датой:
if(isset($date_ar[date('m-d')]))
{
echo $date_ar[date('m-d')];
}
и т.д.