Wordpress 将我的帖子标题转换为一个很棒的永久链接,唯一的事情是我想要下划线而不是连字符,有没有快速的解决方案?
问问题
4992 次
5 回答
4
搜索以下文件:wp-includes/formatting.php
跳转到sanitize_title_with_dashes
函数。你会在里面找到这段代码:
$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = str_replace('.', '-', $title);
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '-', $title);
$title = preg_replace('|-+|', '-', $title);
$title = trim($title, '-');
将所有破折号/连字符 ( -
) 换成下划线 ( _
),如下所示:
$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = str_replace('.', '_', $title);
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '_', $title);
$title = preg_replace('|-+|', '_', $title);
$title = trim($title, '_');
请注意,您在此更改之前创建的任何帖子,并且依赖于%postname%
永久链接结构标签,都将被破坏。
在这种情况下,您需要返回并重新发布这些帖子,以便将破折号换成下划线。或者只是给自己写一点 SQL 来替换它们。
于 2009-11-13T11:32:24.967 回答
2
我不建议更改核心 wordpress 文件,一旦您升级您的网站,您将丢失您的工作。你可以制作一个插件,或者把它放在你主题的functions.php文件中。
add_filter( 'sanitize_title', 'dashes_to_underscore' );
function dashes_to_underscore( $title ){
return str_replace( '-', '_', $title );
}
于 2009-11-17T23:09:42.857 回答
2
在 wp-includes/formatting.php 中查找函数 sanitize_title_with_dashes()
更改对 preg_replace 的调用以使用下划线而不是连字符。
于 2009-11-13T10:37:33.520 回答
0
function sanitize_title_with_underscore( $title )
{
$text_to_transform = sanitize_title_with_dashes( $title);
return str_replace( '-', '_', $text_to_transform );
}
于 2013-07-19T11:27:32.750 回答