I want to pass some value through url in wordpress, but I met some trouble that wordpress will exchange &
to #038;
automatically, how to make a &
still as a &
?
I noticed in wp-includes/formatting.php
, there has many rules to exchange symbols, I tried modify some code, but failed.
some link like
site.com?this=that&that=this
will output to the web browser address like site.com?this=that#038that=this
and the page can not get the value in the part that=this
how to setting correctly? thanks.
You can disable wptexturize() by adding this in a functions.php file inside your template folder (or add it to the existing one):
remove_filter('the_content', 'wptexturize');
But note that this will of course disable all the "cleaning", not just the '&' conversion.
If you prefer to just get rid of the ampersand conversion you can comment line 962 in formatting.php. I post lines 961 and 962 bellow (this is from an unaltered WP 3.1):
// Converts lone & characters into & (a.k.a. &)
$content = preg_replace('/&([^#])(?![a-z1-4]{1,8};)/i', '&$1', $content);
I also had this problem, after some research I found this plugin which fixes it. After installing the plugin you just add these tags around the piece of code you don't want wordpress to format. Like so:
<!-- noformat on -->
Your code with & in it
<!-- noformat off -->
Hope that helps!
One More Solution:
wp-includes\formatting.php
: in esc_url ()
comment the line
$url = str_replace( '&', '&', $url );
It works for me.