В прошлой “серии” мы написали код, который позволял выводить в шапку сайта картинки со ссылками, все данные были прописаны прямо в PHP функции, что не очень красиво – у нас ведь есть доступная БД, с которой работет наш WordPress. В этом посте мы создадим таблицу, в которой будет храниться вся информация о картинках и ссылках для них и сделаем вывод случайных картинок прямо из базы данных.
1. Создание таблицы в базе данных
Идем в phpmyadmin и в окошке SQL запрос выполняем следующие SQL-запросы.
DBPREFIX – префикс таблиц Вашей копии WordPress (по умолчнаию wp_).
CREATE TABLE IF NOT EXISTS DBPREFIXntp_header_images ( id tinyint(3) default NULL, url varchar(255) default NULL, link varchar(255) default NULL ) DEFAULT CHARSET=utf8;
и заполним ее данными
INSERT INTO DBPREFIXntp_header_images (id, url, link) VALUES (1, 'http://lifelongjourney.ru/***/header_images/Sablino_small.jpg', 'http://lifelongjourney.ru/2012/03/08/sablinskie-podzemelya-zabroshennaya-kamenolomnya-plyazhnaya/'), (2, 'http://lifelongjourney.ru/***/header_images/Karpaty1_small.jpg', 'http://lifelongjourney.ru/2012/05/17/pervocvety-guculshhiny-vesennij-treking-v-karpatax/'), (3, 'http://lifelongjourney.ru/***/header_images/Nepal_small.jpg', 'http://lifelongjourney.ru/2011/09/14/nepal-2011-vokrug-annapurny-v-sezon-dozhdej/'), (4, 'http://lifelongjourney.ru/***/header_images/Crimea_Demerdgi_small.jpg', 'http://lifelongjourney.ru/2012/03/15/zimnij-krym/'), (5, 'http://lifelongjourney.ru/***/header_images/Karelia_OD_small.jpg', 'http://lifelongjourney.ru/2010/11/13/osudareva-doroga/'), (6, 'http://lifelongjourney.ru/***/header_images/Moscow_small.jpg', 'http://lifelongjourney.ru/2011/10/24/o-progulke-po-moskve-reke-i-kremlevskix-zvyozdax/'), (7, 'http://lifelongjourney.ru/***/header_images/Nepal_Tilicho_small.jpg', 'http://lifelongjourney.ru/2011/11/19/annapurna-v-sezon-dozhdej-manang-tilicho-base-camp-4-avgusta/'), (8, 'http://lifelongjourney.ru/***/header_images/Crimea_demerdgi_fog_small.jpg', 'http://lifelongjourney.ru/2012/03/15/zimnij-krym/'), (9, 'http://lifelongjourney.ru/***/header_images/Crimea_sea_fog_small.jpg', 'http://lifelongjourney.ru/2012/03/15/zimnij-krym/'), (10, 'http://lifelongjourney.ru/***/header_images/Nepal_clouds_small.jpg', 'http://lifelongjourney.ru/2012/11/14/volshebnyj-krym-v-yanvare/'), (11, 'http://lifelongjourney.ru/***/header_images/Nepal_Tilicho_Lake_small.jpg', 'http://lifelongjourney.ru/2011/11/20/annapurna-v-sezon-dozhdej-tilicho-base-camp-ozero-tilicho-tilicho-base-camp-5-avgusta/'), (12, 'http://lifelongjourney.ru/***/header_images/Crimea_Demerdji_Over_Clouds_small.jpg', 'http://lifelongjourney.ru/2012/11/14/volshebnyj-krym-v-yanvare/'), (13, 'http://lifelongjourney.ru/***/header_images/Paraplan_small.jpg', 'http://lifelongjourney.ru/2012/05/29/proletaya-nad-kon-kamnem/'), (14, 'http://lifelongjourney.ru/***/header_images/Shushmor_night_small.jpg', 'http://lifelongjourney.ru/2012/05/29/shushmor-peshkom/'), (15, 'http://lifelongjourney.ru/***/header_images/Warsaw_old_city_small.jpg', 'http://lifelongjourney.ru/2010/12/31/novogodnij-pobeg-29-12-2010/'), (16, 'http://lifelongjourney.ru/***/header_images/Karpaty2_small.jpg', 'http://lifelongjourney.ru/2012/05/17/pervocvety-guculshhiny-vesennij-treking-v-karpatax/');
Теперь сделаем так, чтобы получать в нашей функции сразу случайный набор картинок. Идем в functions.php
function get_header_imageset2(){ global $wpdb; $out = ''; $id = ''; //Получаем 4 произвольных картинки из БД //Это не самый производительный способ сделать это, но пока картинок не тысячи , рабоатет хорошо $image_links = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."ntp_header_images order by rand() limit 0,4",'ARRAY_A'); //Выводим 4 полученных картинки for ($i = 0; $i < 4; $i++){ if ($i % 4 == 0) $id = "id = \"first_pict\""; else $id = ""; $out .= "<a href=\"".$image_links[$i]['link']."\"><img $id src=\"".$image_links[$i]['url']."\"></a>\n"; } echo $out; }
Обратите внимание на $wpdb->prefix – возвращает префикс таблиц Вашей коопии WordPress, это нам пригодится, когда будем делать инсталятор плагина.
Мы сделали новую функцию – соответственно ее надо прописать в файле header.php, вместо get_header_imageset().
Функция выглядит значительно проще! Следующим шагом мы сделаем интерфейс администратора для нашего плагина.
А при удалении плагина DBPREFIXntp_header_images будет удаляться или останется? На это вообще можно влиять, или WordPress при удалении просто грохает все файлы плагина?
Файлы удаляются. Таблица (а DBPREFIXntp_header_images – это таблица) остается. Сейчас уже есть готовый плагин, там в процедуре деинсталяции я не стал удалять из базы 3 параметра, которые добавляются в options-таблицу и собственно таблицу с картинками. Можно к процедуре деинсталяуии добавить выбор удлатья/не удалять связанные табилцы
Hello.This article was really fascinating, particularly because I was searching for thoughts on this topic last week.