Функция sanitize_title () не работает

Провел довольно много времени, пытаясь понять это. Я реализовал функцию стоп-пробела, которая имитирует то, что, как я полагаю, должна выполнять эта функция, но я хотел бы использовать родные библиотеки / функции, где это возможно, так что вы знаете, что это за черт?

<?php phpinfo(); require_once("/data/[ignore]/[me]/wordpress-4.7.5/wp-includes/formatting.php"); require_once("/data/[ignore]/[me]/wordpress-4.7.5//wordpress-4.7.5/wp-includes/plugin.php"); $unsanitized_string = '123 qwe ASD'; $sanitized_string = sanitize_title($unsanitized_string); echo $sanitized_string; ?> 

Из документации здесь я бы ожидал, что код выше вернет что-то вроде:

 123-qwe-asd 

скорее, он возвращает:

 123 qwe ASD 

Кроме того, из кода введите описание ссылки здесь , я вижу, что он что-то делает с фильтрами. Мне интересно, если что-то об фильтрах, о которых я пренебрегаю.

Учитывая, что sanitize_title () существует примерно с версии 1.0 или около того, я считаю маловероятным, что что-то такое, казалось бы, целостное будет нарушено. Есть предположения?

Я относительно новичок в PHP и WordPress, поэтому я уверен, что у вас все будут вопросы относительно того, как выглядит моя среда. Вместо того, чтобы просто сбрасывать все phpinfo () в этот пост (кажется, небезопасно), позвольте мне, если вам нужно увидеть какие-либо настройки, и я предоставлю.

 PHP Version => 7.0.19-1+deb.sury.org~xenial+2 

Solutions Collecting From Web of "Функция sanitize_title () не работает"

Как вы можете видеть в исходном коде sanitize_title() , вся функция делает это 3 вещи

  1. примените функцию remove_accents() , предположительно, чтобы удалить акценты
  2. применить фильтр sanitize_title
  3. возвращает либо $title либо $fallback_title

Поскольку вы загружаете только некоторые частичные файлы WordPress, вы, вероятно, будете пропускать все свойства фильтра.

Я немного вырыл исходный код, и похоже, что sanitize_title_with_dashes() выполняет большую часть работы. Функция также находится в /wp-includes/formatting.php, поэтому в вашем случае я бы просто использовал ее совместно с remove_accents()

 $sanitized_string = sanitize_title_with_dashes( remove_accents( $unsanitized_string ) );