• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Автоматический подсчет возраста

manhunt8

Новичок
Здравствуйте. Есть значение даты рождения, которое я получаю из плагина acf.
Далее это значение проходит через функцию подсчета возраста и приходит в поле возраст.
Проблема заключается в том, что нужно автоматически подсчитывать возраст (когда работает как есть - надо сохранять карточку товара, потом сохранять с актуальным возрастом).

Значение поля из acf получаю так:
$ageData = get_post_meta($post->ID, 'age', true);

Считаю значение возраста в конечном варианте такЖ
$agedataVivod = calculate_vivod($ageData);
echo $agedataVivod;

Нужно чтобы сразу автоматически подсчитывалось кол-во лет после введения даты рождения прямо в админке в одно заполнение.
 

ADv

Гуру
Местный
Здравствуйте. Есть значение даты рождения, которое я получаю из плагина acf.
Далее это значение проходит через функцию подсчета возраста и приходит в поле возраст.
Проблема заключается в том, что нужно автоматически подсчитывать возраст (когда работает как есть - надо сохранять карточку товара, потом сохранять с актуальным возрастом).

Значение поля из acf получаю так:
$ageData = get_post_meta($post->ID, 'age', true);

Считаю значение возраста в конечном варианте такЖ
$agedataVivod = calculate_vivod($ageData);
echo $agedataVivod;

Нужно чтобы сразу автоматически подсчитывалось кол-во лет после введения даты рождения прямо в админке в одно заполнение.
Тогда не PHP, а JS
 
  • Like
Реакции: marr

manhunt8

Новичок
Тогда не PHP, а JS
Вопрос такой, чтобы вы посоветовали использовать из скриптов? Сейчас нашелся вариант, он в общем работает. Плагин ACF предполагает опцию связанных полей, если полю задать в значение скрипт подсчета возраста, то все приемлимо отрабатывает. Интересно как это можно сделать ещё.
 

marr

Специалист
Местный
Вопрос такой, чтобы вы посоветовали использовать из скриптов?

Есть несколько вариантов. По точности самый правильный этот:

Код:
function getAge(dateString) {
    var today = new Date();
    var birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    return age;
}

исходник
 

manhunt8

Новичок
Есть несколько вариантов. По точности самый правильный этот:

Код:
function getAge(dateString) {
    var today = new Date();
    var birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    return age;
}

исходник
Благодарю, а как этот скрипт правильно применить в файле fuctions.php?
Его можно применить внутри этого:
function my_acf_update_totalprice($post_id)
{
$agedataVivod = calculate_vivod(get_field('age'));
$value = $agedataVivod;
$field_name = "age_par";
update_field($field_name, $value, $post_id);
}
add_action('save_post', 'my_acf_update_totalprice');

Сейчас это выводиться в поле acf так.
 
Сверху Снизу