Запретить Wordpress Перезаписывать Url-Адрес Для Одного Шаблона

  • Автор темы Kesyecoff43
  • Обновлено
  • 22, Oct 2024
  • #1

Были заданы варианты этого вопроса, однако сценарии не совпадают с моими, и, несмотря на все мои усилия, мне не удалось применить предыдущие ответы к рабочему решению в моем варианте использования.

У меня есть шаблон страницы, в который встроено приложение JavaScript. Это приложение использует последний параметр URL-адреса в качестве параметра для запроса ajax, который он запускает и затем выдает результаты.

Из-за проблем с SEO и требований клиента я не могу изменить или изменить способ функционирования синтаксиса этого запроса, поэтому я должен заставить его работать в Wordpress (страница преобразуется из приложения Ruby).

Когда клиент обращается с просьбой:

 
 
 
 
 // Disable redirect_canonical()
add_action( 'init', 'results_tweaks' );
function results_tweaks()
{

remove_action( 'template_redirect', 'redirect_canonical' );
}
 

Мне нужно ответить страницей, созданной с использованием шаблона по адресу:

https://www.wordpresssite.com/service/results

В этой части я работаю со следующим правилом перезаписи в RewriteRule ^service/testing-tool/([a-z0-9.]+)$ /index.php?pagename=service/results [NC,L]

.htaccess

Перезапись работает, однако WordPress меняет URL-адрес в браузере на

https://www.wordpresssite.com/service/results

Это приводит к сбою JS, поскольку параметр домена отсутствует, а также не соответствует ранее упомянутым требованиям.

После некоторых исследований я понял, что проблема в действии redirect_canonical(), поэтому я попытался удалить его из шаблона:

https://www.wordpresssite.com/service/testing-tool/domain.com

Однако, похоже, этого не происходит. Читая документацию WP, я подозреваю, что это связано с тем, что действие уже обработано к моменту загрузки страницы.

Есть ли другой способ переопределить это действие специально для этого шаблона, а не для других? Возможно, есть другой способ, кроме удаления действия?

#переписывание URL-адресов #шаблон-страницы

Kesyecoff43


Рег
17 Aug, 2006

Тем
63

Постов
210

Баллов
535
  • 25, Oct 2024
  • #3

Возможно, вы сможете решить свою проблему, просто изменив правило перезаписи на:

RewriteRule ^service/testing-tool/([a-z0-9.]+)/?$ /index.php?pagename=service/results&domain=$1 [NC,L]

Теперь изнутри https://www.wordpresssite.com/service/results вы можете получить домен через PHP.

Обратите внимание, что я добавил '/?' по вашему правилу, иначе оно не должно работать.

Используя php, вы получите домен (отсутствующий параметр), используя function wpd_service_rewrite() { add_rewrite_rule( '^service/testing-tool/([a-z0-9.]+)$', 'index.php?pagename=service/results', 'top' ); } add_action( 'init', 'wpd_service_rewrite' ); .

Надеюсь, это поможет.

 

NeNZaR


Рег
29 Feb, 2012

Тем
72

Постов
173

Баллов
543
Похожие темы Дата
Похожие темы
Уведомления Настройщика Для Отключенных И Скрытых Элементов Управления
Php – Как Распечатать Массив Определенного Элемента
Добавьте Переменную В Файл Function.php И Вызовите Ее В Файле Single.php.
Многосайтовая Нумерация Страниц С Помощью Get_Posts
Фильтры. Каков Наилучший Способ Разделить Функциональность Только Для Администратора В Файле Функции.php Темы?
Перезапись Url-Адреса. Как Я Могу Динамически Генерировать Изображение Со Статическим Url-Адресом Изображения?
Отправлять Электронное Письмо При Публикации Нового Сообщения В Определенных Категориях
Использование Ajax С Подкачкой И Пользовательским Подзапросом
Wp Query – Как Установить Постоянные Ссылки На Сообщения, Используя 6-Значную Случайную Уникальную Функцию?
Wp-Запрос – Как Добавить Настраиваемое Поле И Увеличить Значение Для Всех Опубликованных Сообщений
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно