Можете сравнивать текущее время с временем публикации
$current_date = date( 'd-m-Y H:i:s' );
$publish_date = get_the_date( 'd-m-Y H:i:s' );
$modified_date = get_the_modified_date( 'd-m-Y H:i:s' );
if ( strtotime( $publish_date . ' + 1 day' ) > strtotime( $current_date ) ) {
echo '<div class="badge">' . __( 'New', 'themename' ) . '</div>';
}
Так же вы можете проверять не время публикации, а время последнего изменения записи, которое можно получить с помощью функции
get_the_modified_date()
Если на сайте используется длительное кеширование, то вывод
.badge нужно переписывать либо на ajax-запросы, либо проверять через локальное время пользователя
Например, выводите
.badge с дата-атрибутом, проверяете на сколько оно отличается от времени пользователи и при необходимости убираете класс
hidden
echo '<div class="badge hidden" data-publish-date="' . esc_attr( get_the_date( 'd M Y H:i:s O' ) ) . '">' . __( 'New', 'themename' ) . '</div>';