Ех, збрехав я :). Статті про шорткод і погоду не буде. Проблема в тому, що з моменту створення мною того шорткоду минуло чимало часу, і спосіб визначення міста на сайті погоди змінився. Через це наразі незрозуміло, як отримати ID потрібного міста, щоб передати його в шорткод і показати інформер погоди. А без цього, як ви розумієте, розробка втрачає сенс.
Упевнений, ви не раз бачили у WordPress-блогах рекламні блоки AdSense або щось подібне. От як це реалізовується — я й опишу у цій статті. Принаймні, так, як зробив би це я.
Перше, що нам знадобиться — створити в корені сайту каталог, у якому зберігатимуться файли з оголошеннями (в майбутньому — у БД). Назвемо його adv, і покладемо туди кілька файлів з назвами, що відповідають розмірам рекламних блоків: 200x200.txt, 180x150.txt, 125x125.txt тощо. Це зручно й наочно, на відміну від умовних ID типу «3», «7» чи «22».
Друге — створимо шорткод (де і як це робиться, описано тут), який зчитує вміст файлу і відображає його у статті. Ось код:
function wp2fl_adv($atts, $content = null)
{
//Sets
$atts = shortcode_atts(array(
'id' => '',
'align' => '',
),$atts);
//Filter
$id = trim($atts['id']);
//Check format
if(preg_match('/^d+xd+$/i', $id) == FALSE)
{
return "";
}
$file = ABSPATH.'adv/'.$id.'.txt';
if(is_file($file) == TRUE)
{
$c = file_get_contents($file);
}
else
{
return "";
}
switch ($atts['align'])
{
case 'center':
preg_match('/^(d+)xd+$/i', $id, $a);
$c = '<div style="width:'.$a[1].'px; margin:10px auto;">'.$c.'</div>';
break;
case 'left':
$c = '<div style="float:left; margin:10px 10px 10px 0;">'.$c.'</div>';
break;
case 'right':
$c = '<div style="float:right; margin:10px 0 10px 10px;">'.$c.'</div>';
break;
}
return $c;
}
add_shortcode("adv", "wp2fl_adv");Розберемо його детальніше:
//Sets $atts = shortcode_atts(array( 'id' => '', 'align' => '', ),$atts);
Встановлюємо значення атрибутів за замовчуванням: ID і вирівнювання (align).
//Filter $id = trim($atts['id']);
Очищуємо ID від пробілів, якщо, наприклад, написано [adv id="200x200 "].
//Check format
if(preg_match('/^d+xd+$/i', $id) == FALSE)
{
return "";
}Перевіряємо правильність формату: числоxчисло, наприклад 200x200.
$file = ABSPATH.'adv/'.$id.'.txt';
if(is_file($file) == TRUE)
{
$c = file_get_contents($file);
}
else
{
return "";
}Якщо файл існує — зчитуємо вміст.
switch ($atts['align'])
{
case 'center':
preg_match('/^(d+)xd+$/i', $id, $a);
$c = '<div style="width:'.$a[1].'px; margin:10px auto;">'.$c.'</div>';
break;
case 'left':
$c = '<div style="float:left; margin:10px 10px 10px 0;">'.$c.'</div>';
break;
case 'right':
$c = '<div style="float:right; margin:10px 0 10px 10px;">'.$c.'</div>';
break;
}В залежності від вирівнювання — центр, зліва чи справа — застосовуємо відповідні стилі обгортки.
Щоб використати шорткод, вставте до статті:
[adv id="200x200" align="left"]
Збережіть і перегляньте сторінку. У мене це виглядало так:
Ось і все. Дякую за увагу!

