是否修改WordPress以不替换URL中的+(加号)字符?

时间:2011-05-23 作者:Will Ashworth

这发生在我们网站的多个部分,但方式不同但相似。

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告诉我们如何思考。

2 个回复
最合适的回答,由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时,更改将保持不变。

结束

相关推荐

如何在EDIT-TAGS.php(定制分类管理页面)上仅按id或slug为定制分类显示术语

如何在编辑标记上仅按id或slug显示术语。用于自定义分类法的php(自定义分类法管理页面)。我正在为每个术语将term\\u owner元数据保存到一个表中,并获取特定term\\u所有者的所有术语ID。现在我只想在上显示这些条款edit-tags.php. 我试过了list_terms_exclusions 过滤器,但似乎不适用于edit-tags.php?taxonomy={custom_taxonomy_name} 或者我错过了什么。有谁能帮我举一个有效的例子吗?谢谢你。