"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Jan 102013
 

В прошлой “серии” мы написали код, который позволял выводить в шапку сайта картинки со ссылками, все данные были прописаны прямо в 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().

Функция выглядит значительно проще! Следующим шагом мы сделаем интерфейс администратора для нашего плагина.

Поделиться в соц.сетях

 Posted by at 12:51 pm

  3 Responses to “Делаем плагин для WordPress.Ротатор картинок для шапки сайта. Вариант с mySQL”

  1. А при удалении плагина DBPREFIXntp_header_images будет удаляться или останется? На это вообще можно влиять, или WordPress при удалении просто грохает все файлы плагина?

    • Файлы удаляются. Таблица (а DBPREFIXntp_header_images – это таблица) остается. Сейчас уже есть готовый плагин, там в процедуре деинсталяции я не стал удалять из базы 3 параметра, которые добавляются в options-таблицу и собственно таблицу с картинками. Можно к процедуре деинсталяуии добавить выбор удлатья/не удалять связанные табилцы

  2. Hello.This article was really fascinating, particularly because I was searching for thoughts on this topic last week.

Leave a Reply to Anonymous Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)