Как запретить обмен URL-адресами WordPress `&` to `# 038;`? - PullRequest
2 голосов
/ 09 апреля 2011

Я хочу передать некоторое значение через url в WordPress, но я столкнулся с некоторой проблемой, что WordPress автоматически заменит & на #038;, как сделать & все еще как &?

Я заметил в wp-includes/formatting.php, есть много правил для обмена символами, я пытался изменить какой-то код, но не смог.

какая-то ссылка, например

site.com?this=that&that=this выведет на адрес веб-браузера, как site.com?this=that#038that=this

и страница не может получить значение в части that=this

как правильно настроить? спасибо.

Ответы [ 3 ]

2 голосов
/ 09 апреля 2011

Вы можете отключить wptexturize () , добавив его в файл functions.php внутри папки вашего шаблона (или добавьте в существующую):

remove_filter('the_content', 'wptexturize');

Но учтите, что это, конечно, отключит всю «очистку», а не только преобразование «&».

Если вы предпочитаете просто избавиться от преобразования амперсанда, вы можете прокомментировать строку 962 в formatting.php. Я выкладываю строки 961 и 962 ниже (это из неизмененного WP 3.1):

// Converts lone & characters into & (a.k.a. &)  
$content = preg_replace('/&([^#])(?![a-z1-4]{1,8};)/i', '&$1', $content);
1 голос
/ 26 марта 2014

У меня тоже была эта проблема, после некоторых исследований я обнаружил этот плагин , который исправляет его.После установки плагина вы просто добавляете эти теги вокруг фрагмента кода, который вы не хотите форматировать в WordPress.Вот так:

<!-- noformat on -->
Your code with & in it
<!-- noformat off -->

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

0 голосов
/ 08 октября 2013

Еще одно решение:

wp-includes\formatting.php: в esc_url () прокомментируйте строку

$url = str_replace( '&', '&', $url );

Это работает для меня.

...