Измените human_time_diff (), чтобы сократить «дни» до «d» и «часы» до «h» и т. Д.

Я использую функцию echo time_ago (), которая отображает время, подобное этому:

5 дней назад Каков наилучший способ изменить его до 5д. Назад ?

Мои исследования привели меня к функции human_time_diff (), расположенной в «formatting.php». Поэтому я попытался напрямую редактировать функцию, расположенную в /wp-includes/formatting.php, но когда я меняю «часы» на «h» и т. Д. это сходит с ума и дает мне ошибки. Я знаю, что изменение ядра – это не лучший способ, поэтому любые идеи? Спасибо.

Solutions Collecting From Web of "Измените human_time_diff (), чтобы сократить «дни» до «d» и «часы» до «h» и т. Д."

Нет фильтра для вывода этой функции. Вы можете переделать (скопировать / переименовать / отредактировать) его или добавить оболочку, которая заменит строки в выводе следующим образом:

function short_time_diff( $from, $to = '' ) { $diff = human_time_diff($from,$to); $replace = array( 'hour' => 'h', 'hours' => 'h', 'day' => 'd', 'days' => 'd', ); return strtr($diff,$replace); } 

PS afterthought – на самом деле строки локализованы, поэтому есть фильтр трансляции, который нужно использовать … Но материал для замены является общим, и это может повредить его в другом месте.

ОБНОВИТЬ

Поскольку WP 4.0 существует фильтр, доступный для human_time_diff :

 add_filter( 'human_time_diff', function($since, $diff, $from, $to) { $replace = array( 'hour' => 'h', 'hours' => 'h', 'day' => 'd', 'days' => 'd', ); return strtr($since, $replace); }, 10, 4 );