如何在wordpress永久链接中使用下划线

时间:2009-11-13 10:05:32

标签: wordpress permalinks

Wordpress将我的帖子标题转换为固定链接,这很棒,唯一的问题是我想要下划线而不是连字符,是否有快速解决方案?

5 个答案:

答案 0 :(得分: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来替换它们。

答案 1 :(得分:4)

我不会这样做主要是因为SEO's issues

你有什么特别的理由吗?我在这里阅读的每个解决方案都是关于黑客wordpress核心,每次更新系统时,你都会再次编辑所有这些文件。 (实际上,2.8.6仅可用yesterday。如果您使用的是旧版本,则需要更改两次。)

答案 2 :(得分:2)

在wp-includes / formatting.php中查找函数sanitize_title_with_dashes()

将调用更改为preg_replace,以使用下划线而不是夸大。

答案 3 :(得分:2)

我不建议更改核心wordpress文件,一旦升级您的网站,您将失去工作。你可以制作一个插件,或者把它放在你主题的functions.php文件中。

add_filter( 'sanitize_title', 'dashes_to_underscore' );
function dashes_to_underscore( $title ){
    return str_replace( '-', '_', $title );
}

答案 4 :(得分:0)

function sanitize_title_with_underscore( $title )
{
    $text_to_transform =   sanitize_title_with_dashes( $title);
    return str_replace( '-', '_', $text_to_transform );
}