Оглавление

[^] Введение

В этом документе будут перечислены некоторые хитрости. Полезные, не очень, вообще бессмысленные. Документ будет иногда пополняться хитростями, сразу мне всё не рассказать ведь всё зависит от ситуации, когда мне или кому-либо понадобилась та или иная хитрость. Как в поговорке, пока гром не грянет мужик не перекрестится.

Что я имею в виду под "хитростями"? Очень просто. Для меня "хитрость" это сделаное что-то стандартными, но не совсем простыми путями, без изменения основного когда. Хитростям могут помочь плагины, моды, но не хаки. Последнии предпологают ковыряние в коде, а это, считаю, непремлимо для хитростей.

[^] Вывод новостей за определённую дату

Требуется вывести новости за определённый год.

В решении проблемы помогут переменные $year, $month и $day.

Чтобы получить список всех новостей за 2005-ый год нужно написать перед подключением show_news.php:

$year = '2005';

За январь 2005-ого:

$year = '2005';
$month = '01';

За 1 января 2005-ого:

$year = '2005';
$month = '01';
$day = '01';

[^] Вывод новостей за неопределённый период

Требуется вывести все новости за, предположим, 11 дней.

На помощь нам придут плагины. Мы напишим маленький "как бы" плагин:

add_filter('news-where', 'show_FromTo');

function show_FromTo($where){
global $show_from, $show_to;

if ($show_from){
$where[] = 'date < '.$show_from;
$where[] = 'and';
}

if ($show_to){
$where[] = 'date > '.$show_to;
$where[] = 'and';
}

return $where;
}

Написать это можно куда угодно, например, перед подключением show_news.php. Без разницы.

Теперь нам доступны переменные $show_from и $show_to. $show_from говорит скрипту откуда показывать, $show_to говорит докуда. Указав эти переменные перед подключением show_news.php мы получим новости из нужного периода:

$show_from = time; // данный год, месяц, день, минута и секунда, т.е. прямо сейчас
$show_to = (time - 60 * 60 * 24 * 11); // пояснения чуть ниже
include rootpath.'/show_news.php';

Функция time() всегда возвращает данное время, время на эту секунду. При каждом обновлении страницы time покажет настоящее время сервера. Для нашего примера (период в 11 дней) time для $show_from подходит отлично.

А вот $show_to имеет тонкость. Мы от настоящего времени (time) отимаем 11 дней:

60 (секунд) * 60 (минут) = час
60 (секунд) * 60 (минут) * 24 (часа) = сутки
60 (секунд) * 60 (минут) * 24 (часа) * 11 (дней) = 11 суток

Как, я надеюсь, вы уже сообразили, наше главное число - 11. Именно оно в данном случае определяет за период скольки дней показывать новости.

P.S. Функцию time() использовать не нужно, используйте именно константу time.

[^] Полезные ссылки