1

Wordpress 将我的帖子标题转换为一个很棒的永久链接,唯一的事情是我想要下划线而不是连字符,有没有快速的解决方案?

4

5 回答 5

4

我不会这样做主要是因为SEO 的问题

你有什么特别的理由这样做吗?我在这里读到的每一个解决方案都是关于破解 wordpress 核心的,每次你更新你的系统时,你都会再次编辑所有这些文件。(事实上​​,2.8.6 就在昨天。如果您使用的是旧版本,则需要更改两次)。

于 2009-11-13T14:13:52.510 回答
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 回答