Вычесть дату из текущей даты и вывести результат в записи wordpress.
Мне надо в админке, у определенных записей, постоянно править дату.
Записей более 200 шт. по количеству работников на предприятии. Это поле называется Общий стаж. Нужно заходить в каждую и менять дату.
Например:
На странице Работника есть параметр его Общий стаж: 17 лет 6 мес.
Через определенное время, нужно заходить в админку и постоянно править этот стаж, прибавляя нужное количество лет и месяцев.
Очень хочу, чтобы wp сам считал и выводил дату в правильном формате. Помогите решить проблему. Сам решение не нашел.
По какой логике нужно добавлять, просто по прошествии времени?
Логика такая
текущая дата - дата начала трудовой деятельности = Общий стаж
Формат отображения на странице такой: X лет X мес.
В результате когда заходишь на страницу записи, должен увидеть правильное значение общего стажа на текущий день от начала трудовой деятельности.
Тут наверное проще всего вычислить метку времени когда работник начал работу. Например если на сегодня он проработал 10 лет - это
10 * 3600 * 24 * 365 = 315360000
в секундах. То значит он начал работать в такую метку времени:time() - 315360000
.Сохраняем это число, например в метаполе
worker_experience_start_time
:Таким образом у нас есть метка времени когда работник начал трудовую деятельность!
Теперь на выводе нужно просто посчитать и вывести в нужном формате. Напишем фунцию:
Используем так:
Для теста укажем время вручную - 5 лет 6 мес и 5 дней:
Спасибо большое за ответ.
После ознакомления и прочтения вашего ответа, увидел, что я не смог объяснить.
Переменную "начало трудовой деятельности" находить не нужно, она изначально известна.
И она не будет целой, как в примере 10 лет.
А будет к примеру 53 года 10 мес.
Начало трудовой деятельности будет равняться 25 июня 1968 года.
function get_exp_human( $start_time ){...} надо прописать в function.php?
Как можно это прикрутить так, чтобы это работало динамически?
Как я вижу тут все сложно с программированием и нужно пошагам все рассказывать. Время на это у меня нет, ну раз уж взялся, то давайте попробуем разобраться.
Во первых в каком конкретно виде хранится текущее значение в поле "начало трудовой деятельности". Как строка вида
53 года 10 мес
?1) ACF это теже самые метаполя, о которых я писал выше.
2) Конечно можно об это же и реч.
добавил следующее (красной стрелочкой обозначено, что я добавил):
Теперь для всех работников выводится один и тот же стаж работы 52 года 4 мес. 7 дней.
Остается реализовать переменную "Начало трудовой деятельности" ввести в произвольном поле, чтобы результат выводился свой для каждого работника.
Походу в поле стаж строка хранится - парсить надо. Ты это поле заполняешь руками, прям пишешь
53 года 10 мес.
да?Тут наверное лучше создать аналогичное поле, только в виде даты, которая будет хранить UNIX метку времени. В ACF такое есть. Затем конвертнуть текущие данные в это поле и использовать его уже, а текущее поле просто удалить.
Попробуй сча создать поле datatime, указать там дату и использовать его значение на выводе.
Ты это поле заполняешь руками, прям пишешь 53 года 10 мес.? Совершенно верно, руками. Это текстовое поле
Да с программированием худо. Мысль я понял, попробую сделать.
Сделал поле в плагине в виде даты.
в шаблоне страницы прописал:
Получилось
52 года 4 мес это он считает от 26 декабря 1969 года
От куда берется эта дата?
Видимо здесь формируется эта дата:
В get_exp_human() тебе нужно указать число, дата начала труд.деятельности в виде UNIX метки времени.
Попробуй так:
И назови поле как-то понятнее, а не
datatime
.Конечно поле будет иметь другое имя.
Я не могу сообразить, почему у всех записей отображается одно число - 52 года 4 мес. У двоих я установил дату начала труд.деятельности. У них точно должно быть разные значения. Но ничего не меняется. Расчет не происходит.
strtotime() использовал для получаемого значения, перед тем как передать его в функцию?
да.