И это далеко не фигня для меня. Заказчик насквозь пропитан иронией к wordpress'у, хотя сам в сайтах ни бум-бум и думает, что wordpress всё делает сам за тебя, поэтому я ему не смогу сдать просто такой сайт. А сменив все эти вещи сайт спокойно уйдёт, в админке никто кроме меня копаться не будет всё равно. Да, смешно. Но далеко не уникально, каждый второй заказчик с головой не дружит, так что...
1) При вставке этого сниппета, вообще не возможно создать страницу с заглавными URL;
2) Теперь не работает вывод всех записей из категории, допустим «http://site.ru/Рубрикатор/Кулинария»;
3) Не срабатывает автоназначение URL (с Заглавными Буквами) вот здесь:
(.?.+?)(?:/([0-9]+))?/?$ pagename=$matches[1]&page=$matches[2]
([^/]+)(?:/([0-9]+))?/?$ name=$matches[1]&page=$matches[2]
'%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_jQuery' == '%d0%9f%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b_jQuery'
false
$page_path = rawurlencode(urldecode('%d0%9f%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b_jQuery'));
%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_jQuery
/**
* Make sure rawurlencoded part of the path is always lowercase.
*
* @param string $title
* @param string $raw_title
* @param string $context
*
* @return string
*/
function lowercase_rawurlencode_path( $title, $raw_title, $context ) {
if ( $context == 'query' && preg_match( "@^[a-zA-Z0-9%+-_]*$@", $title ) ) { // контекст должен быть query, а строка результат rawurlencode
$title_decoded = rawurldecode( $title ); // декодируем строку обратно
$title_parts = preg_split( "/(_|-)/", $title_decoded, -1, PREG_SPLIT_DELIM_CAPTURE ); // разбиваем на части по '_' и '-', сохраняя эти самые разделители (чтобы потом собрать обратно)
foreach( $title_parts as $index => $part ) { // перебираем полученные части
$part_encoded = rawurlencode( $part ); // кодируем часть
if ( $part !== $part_encoded ) { // если она закодировалась
$title_parts[ $index ] = strtolower( $part_encoded ); // приводим в нижний регистр
}
}
return implode( '', $title_parts ); // собираем в строку и возвращаем
}
return $title; // в остальных случаях возвращаем без изменений
}
add_filter( 'sanitize_title', 'lowercase_rawurlencode_path', 10, 3 );
Попробуйте вместо этого темплейта подключить другой, с вот таким кодом:
И покажите HTML, который будет выведен в результате.