Как задать Отсчет времени от даты в записях wordpress?
Как сделать отсчет времени от заданной даты в каждой записи вордпресса?
Например в function.php написать функцию и вызывать в коде single.php
Саму функция написал подобно такую:
Андрей: а документацию по ссылке прочитать не получилось? Там же всего несколько строк. Указываете 2 аргумента, первый - дата ОТ которой считаем, второй - ДО которой. Даты подаем в виде Unix timestamp. Там по ссылке конкретные примеры кода есть.
Игорь Воротнёв: Спасибо, но тогда не вижу особой разницы от мной приведенной. Или...ОТ можно как-то идентифицировать по написанной в тексте статьи? Например по id?
Андрей: из ваших слов ничего не понятно. Вам нужно 2 даты, от и до. 1я (ОТ) - это у вас дата публикации поста или произвольная дата среди обычного текста? 2я (ДО), по всей вероятности - это "сейчас", текущая дата. Исходя из того, где у вас эта дата "ОТ" и в каком она виде/формате будем двигаться дальше.
Игорь Воротнёв: все верно. дата "от" - это любая дата в тексте. "до" - сейчас. Например, запишем 23.04.2015 - пускай id присвоим "otdata". Как сделать вывод верной даты на всех записях?
скорее вопрос в том как идентифицировать дату ОТ именно как дату в этой записи и уже от нее считать (для каждого поста отдельно).
Андрей: вот это уже ближе. Любую дату в тексте нужно провести через php-функцию strtotime( '23.04.2015' ), чтобы на выходе получить Unix Timestamp. Выше я об этом уже писал. А уже timestamp скармливаем функции human_time_diff() в качестве первого аргумента. Ну а как из всего текста поста выбрать именно этот фрагмент с датой - это уже другой вопрос. Если я правильно понимаю, вам надо, чтобы в тексте стояла не какая-то дата (события нарпимер), а время, прошедшее с того момента. В таком случае я бы посоветовал создать шорткод, в который бы вы передавали аргументом дату (в произвольном формате), а уже функция, обрабатывающая шорткод, пропускала бы эту дату через strtotime, потом human_time_diff и печатала текстом сколько времени прошло с той даты.
Игорь Воротнёв: спасибо, ход мыслей понял. Но мне главное понять как какой-то текст с поста вытянуть под функцию. Тут дело даже не во времени, а в других функциях.
но этот отсчет пока как пример (и маленькая задача, которую не могу решить).
Андрей: я уже попытался подсказать выше, вы видимо не заметили :) Пишете пост. Вариант 1 - дату оборачиваете в шорткод, например [humandate date="ваша_дава" time="ваше_время_опционально"]. Шорткоды WP парсит, вам нужно всего лишь написать функцию, которая будет забирать аргументы шорткода и выводить в нужном виде, и этой функции сделать register_shortcode. Второй вариант - весь контент поста пропускать через парсер. WP предоставляет готовый фильтр:
$content = $db_object->post_content;
$content = apply_filters( 'the_content', $content );
В этот фильтр можно захукать свою функцию, которая пробежит по тексту, найдет нужный контент и заменит его. Для этого есть разные методы - регулярные выражения, preg_replace, preg_replace_callback и другие функции. Это уже вопрос на уровне PHP, и в другой раздел. Со стороны WP для этого все готово.