在固定链接中将连字符转换为下划线

时间:2013-01-05 作者:PrivateUser

我想在永久链接中使用下划线,而不是连字符。

当前永久链接:

www.example.com/2013/01/hello-this-is-a-test-post/
所需permalink

www.example.com/2013/01/hello_this_is_a_test_post/
我试过了some solutions 在stacexchange中提到。但他们没有工作。

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

Toscho 这样建议我。

Google将-视为单词分隔符,但不将其视为\\u0。你会受伤的。:)

他是百分之百真实的。这里是an article 这就是原因。所以我放弃了这个想法。

但如果你仍然在寻找解决方案,这里就是答案。

答复人:this stackoverflow user

查找以下文件: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来替换它们。

SO网友:Md. Elias

无需任何代码或插件即可轻松完成。只需转到页面仪表板,单击“快速编辑”即可更改要更改的url。现在添加下划线。更新并完成

SO网友:Joey Wohleb

最初我是这样做的,但每次更新Wordpress时,我都必须再次进行手动更改,所以我制作了这个插件,以防它对任何人都有帮助:http://wordpress.org/plugins/underscores-in-permalinks/

结束

相关推荐

WP_Query in functions.php

我有一些代码要转换成函数。它工作得很好,直到我将其包装到所述函数中: $args = array( \'posts_per_page\' => -1, \'post_type\' => \'asset\', \'category_name\' => $cat ); $cat_query = new WP_Query( $args );