Виведення рекламних оголошень через шорткоди

Виведення рекламних оголошень через шорткоди

Ех, збрехав я :). Статті про шорткод і погоду не буде. Проблема в тому, що з моменту створення мною того шорткоду минуло чимало часу, і спосіб визначення міста на сайті погоди змінився. Через це наразі незрозуміло, як отримати 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"]

Збережіть і перегляньте сторінку. У мене це виглядало так:

Вивід рекламного блоку через шорткод

Ось і все. Дякую за увагу!

Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *