Я работаю над настройкой темы Worpress по умолчанию. Я столкнулся с проблемой форматирования архивных ссылок.
Тема по умолчанию использует функцию wp_get_archives
, определенную в general-template.php
. Вывод функции настраиваемый, но не достаточно настраиваемый для меня.
Я могу добиться всего, что я хочу сделать, в основном переопределив эту конкретную функцию в моем файле functions.php
, но я не решаюсь сделать это, поскольку это приводит к проблемам регрессии по мере обновления Wordpress. wp_get_archives
выполняет все вещи более низкого уровня, например, создает запрос к БД и кэширует результаты БД. Я действительно хотел бы избежать этого, если смогу.
Другой способ, который мне доступен, - создать фильтр get_archives_link
, после чего ссылка HTML уже отформатирована, и мне потребуется выполнить несколько регулярных выражений, чтобы понять это. Это кажется мне совершенно отсталым, так как это полностью убило бы производительность.
Вот что я хочу получить:
<li><a href="/year/01">JAN</a></li>
<li class="current"><a href="/year/02">FEB</a></li>
<li>MAR</li> <!--no blog entries this month-->
...
Насколько я вижу, wp_get_archives
имеет жестко закодированный текст привязки:
$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
Тогда возникает проблема добавления месяцев, у которых нет сообщений, я бы предпочел сделать это без разбора текста. Затем мне нужно было бы добавить текущий класс (когда URL-адрес что-то вроде ... / 2009/12).
На самом деле у меня есть решение, которое работает с использованием копии wp_get_archives
. Это способ делать вещи, и я слишком много беспокоюсь о них?
РЕДАКТИРОВАТЬ Полагаю, реальный вопрос в том, можно ли писать свой SQL для темы Wordpress? И если это так, то какова лучшая практика в этом?