Как WordPress генерирует URL-пули?

Есть ли страница где-то, где подробно описано, как WordPress генерирует пули для URL-адресов? Я пишу сценарий, который должен генерировать пули URL-адресов, идентичные тем, которые генерирует WordPress.

Solutions Collecting From Web of "Как WordPress генерирует URL-пули?"

С летучей мыши я не могу дать вам страницу / учебник / документацию о том, как создаются пули WP, но посмотрите на функцию sanitize_title() .

Не производите неправильное впечатление от имени функции, оно не предназначено для дезинфекции названия для дальнейшего использования в качестве заголовка страницы / сообщения . Он берет строку заголовка и возвращает ее для использования в URL-адресе:

  • полосы HTML и PHP
  • полосы специальные символы
  • преобразует все символы в нижние
  • заменяет пробелы, подчеркивания и периоды дефисом / тире
  • уменьшает несколько последовательных тире до одного

Там могут быть крайние случаи, когда ядро ​​делает что-то дополнительное (вам придется посмотреть на источник, чтобы убедиться, что sanitize_title() всегда будет достаточным для создания точно такого же, как вы ожидаете), но это должно охватывать не менее 99%, если не все, случаи.

Ядро в вашем распоряжении

В WordPress нет режима разработчика, кроме WP_DEBUG , что в этом случае не поможет вам. В основном WP использует «Rewrite API» , который представляет собой основанную на функциях оболочку низкого уровня для класса WP_Rewrite , о которой вы можете прочитать в Codex . global $wp_rewrite объект global $wp_rewrite стоит у вас на службе, чтобы проверить его или взаимодействовать с классом.

Плагины, которые помогают вникать в нее.

Toschos «T5 Rewrite» -Плугин и Ян Фабрис «Анализатор переименования Monkeyman» -Плугин проведет вас по-своему. Я написал небольшое расширение для «T5 Rewrite», чтобы плавно интегрировать его с «Monkeyman Rewrite Analyzer», который вы можете найти в репозитории «T5 Rewrite» здесь, на GitHub .

«Monkeyman» -plugin добавляет новую страницу, помещенную в меню пользовательского интерфейса администратора в разделе « Инструменты» . «T5 Rewrite» -plugin добавляет новую вкладку справки на страницу « Настройки» > « Постоянная ссылка» . Мое расширение добавляет вкладки справки к указанной странице « Инструменты» .

Вот скриншот о том, как выглядит содержимое вкладки «T5 Rewrite» -plugins.

введите описание изображения здесь

Vorlage = Pattern | Beschreibung = Объяснение | Beispiele = Примеры

Заметки

«T5 Rewrite» -plugin отлично справляется с тем, чтобы помочь вам проверить объект перезаписи. И это еще больше: он добавляет новые возможности. Поэтому это (по крайней мере, в моих установках) часть моего основного пакета плагинов.

Вы можете использовать эту функцию:

 static public function slugify($text) { // replace non letter or digits by - $text = preg_replace('~[^\pL\d]+~u', '-', $text); // transliterate $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); // remove unwanted characters $text = preg_replace('~[^-\w]+~', '', $text); // trim $text = trim($text, '-'); // remove duplicate - $text = preg_replace('~-+~', '-', $text); // lowercase $text = strtolower($text); if (empty($text)) { return 'n-a'; } return $text; } 

Это точно как работает функция очистки wp url.

На самом деле, если вы посмотрите основную функцию wp_insert_post (post.php), вы увидите, что она делает следующее:

 $data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent ); $wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where ); 

Главное отметить, что использует как wp_unique_post_slug, так и sanitize_title:

 wp_unique_post_slug( sanitize_title(