✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как удалить специальные символы из постоянных ссылок

32

Всякий раз, когда вы работаете с WordPress и сторонними API, всегда есть вероятность, что вы столкнетесь с проблемами, когда сторонний API не готов обрабатывать определенные символы, существующие в постоянной ссылке.

Однако в зависимости от настроек постоянной ссылки это может быть проблемой, а может и не быть. Например, ваши постоянные ссылки могут быть установлены на что-то вроде ?p=123 для каждого сообщения. В таком случае это не большая проблема.

Но если вы используете «красивые постоянные ссылки», и ваша постоянная ссылка включает что-то вроде символа товарного знака или символа авторского права, это может вызвать проблемы всякий раз, когда вы общаетесь с указанным сторонним API.

Во-первых, если вы используете красивые постоянные ссылки, они обычно создаются из заголовка сообщения. Поэтому, если вы используете что-то вроде All About The Acme Machine™, вы сгенерируете постоянную ссылку, содержащую что-то подобное.

Например, WordPress может автоматически генерировать что-то вроде этого: https://acme.com/all-about-the-acme®-machine/

И когда придет время отправить эту информацию стороннему API (или попытаться обработать ее с помощью чего-то, что не подготовлено для таких символов), у вас возникнут проблемы.

К счастью, WordPress предоставляет хук, который позволяет нам обрабатывать постоянные ссылки до того, как они будут сериализованы в базе данных. А именно, это хук wp_insert_post_data.

И в этом случае это работает так:

  1. Настройте хук так, чтобы он срабатывал в конце процесса сериализации,
  2. Ищите символы, которые могут быть проблематичными,
  3. Замените их пустой строкой,
  4. Верните обновленную информацию в WordPress для сериализации.

Вот пример, который пытается удалить различные символы, такие как символы авторского права, символы товарных знаков, символы регистрации и другие их варианты как в закодированных форматах, так и в закодированных эквивалентах:

Обратите внимание, что функция принимает данные поста в качестве аргумента, проверяет, не работаете ли вы с черновиком, ожидающей статьей или авточерновиком, а затем удаляет содержимое имени поста с помощью

Это может быть вопрос нюансов. То есть, возможно, вы не столкнетесь с ним в своих разработках. Если, с другой стороны, вы это сделаете, то это предоставляет решение, которое не только позволяет вам удалять определенные символы из URL-адреса, но также позволяет вам делать это в масштабируемом формате.

Поэтому, когда ваши потребности меняются, вы можете просто обновить вызов preg_replace, указав символы, которые вам нужно удалить из вашего URL-адреса.

Источник записи: tommcfarlin.com

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