Как переписать даты постов для определённых категорий (ролевая игра в жанре нарратив)

Ооо, звучит весело! Скорее всего, существующих решений для этого нет, и я не могу представить себе законную причину создавать такое, которое реально изменило бы настоящую метку времени. Вместо этого вы можете создать собственный компонент темы, который будет добавлять фиктивную метку времени к каждому сообщению.

Вы можете добавить общий [wrap] bbcode, который позволит использовать любой произвольный [wrap=] bbcode в сообщениях, которые вы хотите изменить.

Настройте что-то вроде [wrap=timechange time='Apr 1'][/wrap], и вы получите <span class="d-wrap" data-time="Apr 1" data-wrap="timechange"></span> непосредственно в сообщении. Затем вы можете использовать decorateCookedElement(), чтобы искать [data-wrap="timechange"] в каждом сообщении и решать, нужно ли изменять метку времени.

Полагаю, что в точке вывода метки времени нет плагина, но вы всегда можете просто вставить новый элемент в якорный элемент даты сообщения и использовать CSS, чтобы скрыть старый.

Вот как сейчас выглядит дата сообщения.

<div class="post-info post-date">
  <a class="widget-link post-date" href="..." title="Post date">
    <span title="..." data-time="..." data-format="tiny" class="relative-date">...</span>
  </a>
</div>

Вам, вероятно, стоит выбрать .post-info a.post-date и добавить туда новый элемент, например span. Небольшой CSS .post-info a.post-date span:first-child { display: none; } скроет настоящую метку времени. Выбор якорного тега и сохранение его позволит вашим пользователям продолжать использовать его как обычно (там есть функция обмена).

Связав это с decorateCookedElement(), помните, что эта функция возвращает корневой элемент обработанного сообщения, поэтому вы можете быстро подняться вверх по DOM отсюда с помощью element.closest() и .querySelector(), чтобы добраться до нужного .post-info.

Использование bbcode позволит вам (и любому другому) изменять внешний вид любого сообщения, независимо от категории. Вы также можете ограничить места, где это будет отображаться, с помощью хитрого CSS. У тела должен быть класс .category-*, содержащий название категории темы. Таким образом, вы можете ограничить свой CSS только этими категориями.