Задумал я сделать для своего блога систему рекламы, причём такую, чтобы не нужно было вставлять текст рекламы прямо в пост, потому что если потом что-нибудь нужно будет изменить в рекламе, или вообще отменить показ рекламы, то замучаешся потом прошлые посты перелопачивать. Поэтому хотелось чтобы реклама была отдельно, а посты отдельно, и чтобы можно было легко управлять показом рекламных блоков. Рекламные блоки я задумал показывать сверху и снизу сообщения.
Для того чтобы хранить рекламные сообщения, я создал раздел “Реклама” чтобы держать там все рекламные сообщения, причём их не нужно публиковать, главное что они там есть, и у каждого сообщения есть свой ID. Для того чтобы этот рекламный раздел и посты из него не мешались с основными сообщениями, просто не публикуйте их. Чтобы категория не выводилась в меню-списке категорий, воспользуемся параметром exclude функции wp_list_categories, примерно так:
<?php wp_list_categories('exclude=10'); ?>
где 10 это ID категории “Реклама”. Теперь и сама категория и посты из неё невидимы для пользователя, а появляться текст из этих рекламных постов будет только там, где нам нужно.
Для того чтобы загрузить нужный рекламный пост, нужно знать его ID, вот для этого нам и нужны так называемые произвольные поля (custom fields). Если я хочу показать рекламу вверху какого-то поста, то я добавляю к нему произвольное поле, например с именем reklama_top и со значением которое соответсвует ID рекламного поста который я хочу показать вверху. Тоже самое и для показа внизу, только произвольное поле назовём например reklama_bottom.
Теперь мы будем проверять у каждого сообщения есть ли у него эти поля, и если есть, то брать из них значение ID, загружать рекламный пост с этим ID и выводить его текст вверху или внизу сообщения. Вот пример кода для этого (реклама вверху):
<?php $values = get_post_custom_values('reklama_top'); $reklama_id=(int)$values[0]; ?>
<?php if ($reklama_id) : $p = get_post($reklama_id); ?>
<?php if($p && strlen($p->post_content) > 0) : ?>
<div class="reklama">
<?php echo $p->post_content; ?>
</div>
<?php endif; ?>
<?php endif; ?>
Тоже самое и внизу сообщения, только название произвольного поля другое (reklama_bottom). В этом коде мы сначала берём значение из соответствующего произвольного поля, а потом по полученному ID загружаем рекламный пост и выводим его текст на экран. Если мы не хотим показывать рекламу, то просто не добавляем к сообщению никаких полей rekfma_top/reklama_bottom, в этом случае никакой рекламы загружаться и показываться не будет.
Вот так вот я вывожу рекламу у себя в блоге. Я могу легко включать или выключать её, редактировать текст рекламного сообщения прямо в редакторе, и показывать одно и то же рекламное сообщение вместе с любым постом каким захочу, просто добавляя к нему нужные custom поля. Вот такая вот система.
Будет доллар хоть по 8 — всё равно мы пить не бросим!
Мои домены на продажу
Памятник Богдану Хмельницкому. Киев.