帖子标题不允许我在永久链接中使用2个连续的破折号

时间:2015-05-28 作者:user1399181

我有一个网站,YouTube视频ID被用作帖子标题。除了一些有效的YouTube视频ID有两个连续的破折号外,这基本上可以正常工作。例如,“j--c0wP54JU”被wordpress自动修改为“j-c0wP54JU”(注意单破折号)。

当我尝试从“编辑帖子”页面手动编辑永久链接时,当我按“确定”时,它会不断删除连续的两个破折号。

我在哪里可以禁用Wordpress将URL更改为“web安全”的这一部分?

2 个回复
最合适的回答,由SO网友:birgire 整理而成

关于why 第二部分,我想我可以追溯到以下几点line:

$title = preg_replace(\'|-+|\', \'-\', $title);
sanitize_title_with_dashes() 作用

它已添加到santize_title() 通过过滤器:

add_filter( \'sanitize_title\', \'sanitize_title_with_dashes\', 10, 3 );
但我不建议完全删除它。

更新:

这里有一个快速而肮脏的解决方法:

add_filter( \'sanitize_title\', function( $title )
{
    return str_replace( \'--\', \'twotempdashes\', $title );
},9 );


add_filter( \'sanitize_title\', function( $title )
{
    return str_replace( \'twotempdashes\', \'--\', $title );
},11 );
其中,我们将两个破折号替换为某个临时字符串sanitize_title_with_dashes 激活,然后再次将字符串替换为两个破折号。我们可以将其调整为更一般的情况,但您明白了;-)

SO网友:Nicolai Grossherr

罪魁祸首是sanitize_title() 通过sanitize_title 钩连接到它的函数是sanitize_title_with_dashes(); 我看到@birgire也找到了它wp-includes/default-filters.php.

添加\\u筛选器(“sanitize\\u title”、“sanitize\\u title\\u with\\u破折号”,10,3);

您可以使用remove_filter() 就是为了做到这一点。

remove_filter( \'sanitize_title\', \'sanitize_title_with_dashes\', 10 );
但是beware, 你现在不再清理你的标题了,实际上not 推荐@birgire关于why部分的说法绝对正确,但你不能轻易改变,所以我建议复制sanitize_title_with_dashes(), 去掉“坏”部分。使用add_filter() 将自定义筛选函数挂接到sanitize_title.

结束

相关推荐

Dynamic Custom Permalinks

我有一个场景,其目的是创建可以动态更改的自定义永久链接,例如:如果显示国家信息,则URL应为http://example.com/country-information如果显示特定国家的城市信息,则URL应如下所示http://example.com/country/city-information. 我怎样才能做到这一点?