функция содержит несколько ошибок:
Переменная $now содержит только сегодняшнюю дату в формате Y-m-d, а не объект DateTime, который можно использовать для вычисления разницы между датами. Чтобы получить объект DateTime, нужно использовать функцию new DateTime().
Переменная $date содержит строку с датой рождения, которую нужно преобразовать в объект DateTime, прежде чем можно вычислить разницу между датами.
Переменная $datediff содержит результат вычитания двух объектов DateTime, которое возвращает объект DateInterval, а не целочисленное значение разницы в днях между датами.
При выводе значения переменной $datediff в атрибуте value у элемента input используется не тот формат, который требуется для отображения возраста в годах.
вот исправленный код:
$now = new DateTime();
$nothing = '';
$date_str = get_the_author_meta( '_birthday', $user_id ); // получаем дату рождения как строку
if ( empty( $date_str ) ) {
$age_str = $nothing; // если дата рождения не указана, возвращаем пустую строку
} else {
$date = new DateTime( $date_str ); // преобразуем дату рождения в объект DateTime
$diff = $now->diff( $date ); // вычисляем разницу между датами
$age_str = $diff->y; // получаем количество полных лет
}
?>
<input type="text" name="_age" id="_age" placeholder="Возраст" value="<?php echo $age_str; ?>">