Здравствуйте! с вами Павел. И первое, чтобы бы мне хотелось сделать - так это извиниться что пишу не так часто, как хотелось бы. К сожалению (или нет) но последнее время слишком много работы, и писать новые статьи совершенно не успеваю. Но пока 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')];
}
и т.д.