这发生在我们网站的多个部分,但方式不同但相似。
Scenario One:
我们有这样的URL结构。。。
mydomain。com/某些类别/?主题=一些+主题
我正在努力使分页正常工作。我用urlencode()表示空间并得到+,但我使用的是空格还是+,都无关紧要。。。Wordpress总是尝试这样做。。。
mydomain。com/some-category/page/2/?主题=某个主题
。。。而不是这个。。。
mydomain。com/some-category/page/2/?主题=一些+主题
WordPress出于某种原因正在删除空格/+。我们还没有弄清楚原因。非常感谢您的帮助。
Scenario Two:
我有预定义的slug,它们与电子商务系统中的零件代码完全匹配。我们有定制的插件,通过slug匹配系统中的部分代码,将页面与电子商务系统相关联。反过来,它会生成格式良好(且自动)的订单表以供签出。
Wordpress正在删除slug中包含的所有“+”,这可能是我们零件代码的一部分。有没有办法让Wordpress停止乱动我们的URL,让我们做我们想做的事?我们宁愿自己思考,也不愿让Wordpress告诉我们如何思考。
最合适的回答,由SO网友:fuxia 整理而成
您可以连接到WordPress的slug算法并创建自己的slug。例如,查看我的plugin Germanix URL. 我不确定WordPress是否可以接受带有+
无需进一步调整。
如果只是想让slug不需要太多编码,请安装Germanix并使用以下代码创建第二个插件:
<?php # -*- coding: utf-8 -*-
/*
Plugin Name: Germanix plus +
*/
add_filter( \'germanix_translit_list\', \'remove_plus_from_transliteration\', 10, 1);
add_filter( \'germanix_lower_ascii_regex\', \'allow_plus_on_regex\', 10, 1);
function remove_plus_from_transliteration( $utf8 )
{
unset ( $utf8[\'+\'] );
return $utf8;
}
function allow_plus_on_regex( $regex )
{
# $regex[\'pattern\'] => \'~([^a-z\\d_+.-])~\'; // was this
$regex[\'pattern\'] = \'~([^a-z\\d_+.-])~\'; // now this
return $regex;
}
remove_filter( \'editable_slug\', \'urldecode\' );
我现在还没有测试过这个,但它应该可以工作
SO网友:Michael
看起来他们正在3.3中修复它:http://core.trac.wordpress.org/ticket/18086
他们在/wp includes/canonical中修复了它。php,添加:
$_parsed_query = array_map( \'urlencode\', $_parsed_query );
。。。该行上方:
$redirect_url = add_query_arg( $_parsed_query, $redirect_url );
所以,是的,您正在修改core,但它只有一行,您知道当您更新到3.3时,更改将保持不变。