Вывод рекламных объявлений через шорткоды

Вывод рекламных объявлений через шорткоды

Эх, наврал я :). Не будет статьи про шорткоды и погоду. Проблема оказалась в том, что с момента разработки мной этого шорткода прошло не мало времени. И способ определения города на сайте погоды изменился. Из-за чего, непонятно как можно получить 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 объявления, будем указывать еще и место расположение — по центру или слева, справа с обтеканием.

//Filter
$id = trim($atts['id']);

фильтруем, удаляя лишние пробелы в начале или конце параметра ID. Это делается если Вы решите указать следующий шорткод:

[adv id="200x200 "]
//Check format
if(preg_match('/^d+xd+$/i', $id) == FALSE)
{
	return "";
}

чтобы не было ошибок, используя регулярное выражение проверяем формат параметра ID. Он должен быть следующим — числа, английская буква «x», опять числа. Пример: 200x200, 180x150, 125x125.

$file = ABSPATH.'adv/'.$id.'.txt';
if(is_file($file) == TRUE)
{
	$c = file_get_contents($file);
}
else
{
	return "";
}

если файл с указанным ID существует — считываем его содержимое.

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 сайтом проблемы? нужен дополнительный функционал? нестандартный плагин или сверстать новую страницу?
Тогда напишите мне через форму обратной связи, и я постараюсь вам помочь.

Комментарии
  1. Богдан

    Не знал об этом способе, буду пробовать. Спасибо за пост!!

    ответить
    1. Pavel
      07.04.2015 в 15:15 автор блога

      Пожалуйста, Богдан!
      Одна из следующих статей будет посвящена плагину позволяющему создавать такие объявления через админку. А выводить через шорткод.

      ответить
      1. Богдан

        С нетерпением жду.

        ответить
  2. Максим Зайцев

    Павел, добрый день. Хорошая статья, код расписан понятно. Только я бы ещё добавил, как вставлять функцию и куда её вставлять. Многие новички не знают, как вставлять коды в функции темы и тем более в каком месте.

    ответить
    1. Pavel
      19.04.2015 в 16:02 автор блога

      Здравствуйте!
      В следующих статьях постараюсь учесть.

      ответить
      1. Максим Зайцев

        Павел, посетители это оценят 😉 Удачи!

        ответить
        1. Pavel
          19.04.2015 в 16:07 автор блога

          Спасибо! Вам так же успехов 🙂
          А вообще я думал создать отдельную статью по этому поводу, и давать ссылку на нее. Т.к. дублировать одно и то же в каждой статье не вижу смысла.

          ответить
Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *