<?php
// Рассчитать возраст по датам YYYY-MM-DD. Возвращает int или null.
function my_calculate_age($birthDate, $deathDate) {
if (empty($birthDate) || empty($deathDate)) return null;
$b = DateTime::createFromFormat('Y-m-d', $birthDate);
$d = DateTime::createFromFormat('Y-m-d', $deathDate);
if (!$b || !$d) return null;
if ($b->format('Y-m-d') !== $birthDate || $d->format('Y-m-d') !== $deathDate) return null;
if ($d < $b) return null;
return (int)$d->diff($b)->y;
}
// Общая функция сохранения возраста в метаполе поста
function my_wpuf_save_deceased_age($post_id) {
if (empty($post_id) || wp_is_post_revision($post_id)) return;
$birth = isset($_POST['birth_date']) ? sanitize_text_field($_POST['birth_date']) : '';
$death = isset($_POST['death_date']) ? sanitize_text_field($_POST['death_date']) : '';
$age = my_calculate_age($birth, $death);
if ($age !== null) {
update_post_meta($post_id, '_deceased_age', $age);
} else {
delete_post_meta($post_id, '_deceased_age');
}
}
// Хуки WP UF 6.8.2 для создания и обновления поста
add_action('wpuf_after_post_create', 'my_wpuf_save_deceased_age', 10, 1);
add_action('wpuf_after_post_update', 'my_wpuf_save_deceased_age', 10, 1);
?>