Разработка сайтов на WordPress и фреймворке Yii2

Здесь Вы можете заказать полный пакет услуг по разработке сайта. Начиная от написания ТЗ до программирования на PHP, JavaScript и верстке.

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

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

Эх, наврал я :). Не будет статьи про шорткоды и погоду. Проблема оказалась в том, что с момента разработки мной этого шорткода прошло не мало времени. И способ определения города на сайте погоды изменился. Из-за чего, непонятно как можно получить 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+x\d+$/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+)x\d+$/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+x\d+$/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+)x\d+$/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"]

сохраните, и проверьте результат просмотрев соответствующую страницу. У меня это выглядело так:

Отобржание рекламного объявленияНа этом все. Спасибо за внимание!

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

  1. Богдан

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

    ответить
    1. Pavel

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

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

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

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

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

    ответить
    1. Pavel

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

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

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

        ответить
        1. Pavel

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

          ответить

Добавить комментарий

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