Я хотел бы отменить _wp_mysql_week()
Функция WordPress находится в wp-includes/functions.php
с момента фактического _wp_mysql_week()
не соответствует стандарту ISO 8601 и запрашивает режим 1 для WEEK()
Функция MYSQL вместо режима 3.
Я хотел бы добавить фильтр или что-то в теме functions.php, но не мог найти как.
Спасибо за любую помощь
Способ установки этой функции в WP 4.1: если вы укажете «понедельник» в качестве первого дня недели в таблице параметров, вы получите номера недель ISO8601: 1988 (режим MySQL 1). В противном случае вы получите режим 0.
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week
Вы также можете использовать фильтр после создания запроса, но до его передачи в MySQL. В вашем фильтре вы можете изменить текст запроса для изменения
WEEK( something, 0 )
в
WEEK( something, 1 )
чтобы получить ваше поведение ISO 8601: 1988. Это объясняет фильтрацию запросов. http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_clauses
Обратите внимание, что функция _wp_mysql_week сгенерирует выходные данные с пробелами, где я показал здесь знаки фунта.
WEEK(#something,#1#)
Если ваша неделя начинается в другой день, кроме воскресенья или понедельника, сгенерированный код запроса выглядит следующим образом:
WEEK(#DATE_SUB(#something,#INTERVAL#3#DAY#),#0#)
Таким образом, вы можете использовать регулярные выражения в своем фильтре для поиска
WEEK( .+? 0 )
затем измените цифру на 1. Но, конечно, регулярные выражения имеют свои опасности.
Вы также можете запросить добавление нового фильтра специально к выходным данным _wp_mysql_week, чтобы позволить пользовательскому коду управлять им. https://core.trac.wordpress.org/ Команда WordPress обычно восприимчива к таким запросам.
Других решений пока нет …