Переопределить основную функцию WordPress _wp_mysql_week ()

Я хотел бы отменить _wp_mysql_week() Функция WordPress находится в wp-includes/functions.php с момента фактического _wp_mysql_week() не соответствует стандарту ISO 8601 и запрашивает режим 1 для WEEK() Функция MYSQL вместо режима 3.

Я хотел бы добавить фильтр или что-то в теме functions.php, но не мог найти как.

Спасибо за любую помощь

0

Решение

Способ установки этой функции в 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 обычно восприимчива к таким запросам.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]