Рекоммендуется / best practice - ООП. Какие паттерны юзать - дело ваше. Синглтоны - весьма спорный подход, одни оторваться от него не могут, других тошнит.
Но ООП только для больших плагинов. Например, если пишется много кастомного функционала для сайта (в виде плагина/ов), или один нишевый относительно большой плагин, используем ООП. Если плагин небольшой и не сложный - процедурно. Нет смысла строить многоэтажку там, где достаточно хижины на берегу.
И в любом случае, если плагин подразумевает удобные методы вывода контента / результатов его работы в шаблоны, то стоит писать свои template tags для удобства конечных пользователей - хорошая практика. Им существенно проще использовать привычный формат, например, кастомная функция my_get_post_views(), которая выводит количество просмотров поста, вместо вызова метода класса. Сама функция, в свою очередь, является только оберткой для этого вызова, но простым пользователям так понятнее и удобнее.