Я работаю над настройкой темы по умолчанию Worpress. Я столкнулся с проблемой форматирования ссылок на архив.Переопределение wp_get_archives для темы в Wordpress
Тема по умолчанию использует функцию 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
. Это способ сделать что-то, и я слишком беспокоюсь ни о чем?
EDIT Я думаю, что реальный вопрос в том, правильно ли писать ваш язык SQL для темы Wordpress? И если это так, то в чем лучшая практика в этом.
Достаточно честный, я сделал его отдельной темой, чтобы он не зависал при обновлении Worpress. Проблемы с регрессией, которые я имел в виду, это изменения в схеме базы данных или интерфейсе кэширования. Насколько я понимаю, SQL очищается в фильтре, поэтому маловероятно, что произойдут изменения безопасности, связанные с SQL-инъекциями. –