Wordpress:允许在下标中加下划线

问题描述 投票:0回答:1

//问题

我需要Wordpress停止在其子句/永久链接中将下划线变成连字符。

//情况

将旧站点移至全新的Wordpress安装。旧网站的网址中使用下划线。我们目前需要保留包含下划线的旧网址(请不要在此处建议任何SEO建议,谢谢)。

Wordpress清理了它的段符/永久链接。下划线变成连字符。

我希望在我的代码中同时使用下划线和连字符。我不希望完全用另一种替代,这是我发现的大多数建议/解决方案的根源。

不符合我的标准的解决方案示例:

https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore-in-permalinks

允许点使用的解决方案示例:

https://wordpress.stackexchange.com/questions/231448/how-to-add-dot-in-post-slug

//我尝试过的东西

我已经搜索了一种解决方案,但找不到令人满意的解决方案。假定使用sanitize_title_with_dashes函数在/wp-includes/formatting.php中定义了对段符/永久链接的清除。

我在此处粘贴了与清理相关的代码:

https://pastebin.com/jRqV8iB8

我只能看到目标下划线是:

$title = preg_replace( '/[^%a-z0-9 _-]/', '', $title );

出于测试目的,我从该行中删除了下划线,替换了服务器上的formatting.php,并尝试再次将下划线放入。但是它什么也没做。我也只是根据前面提到的“永久链接中的允许点”链接才知道,该行应该允许在URL中加下划线。

这也适合注释内容“ *将输出限制为字母数字字符,下划线(_)和破折号(-)。“

所以...这段代码是说,下划线是允许的(在条/永久链接中?),但在我的条/永久链接中仍然删除了下划线。

有人能在这里看到我看不到的东西吗?还是建议使用一个过滤器,该过滤器可以在子段/永久链接中同时包含下划线和连字符?现在我被卡住了。

谢谢您愿意提供的任何帮助。

wordpress underscore.js permalinks slug sanitize
1个回答
0
投票

Google将-视为单词分隔符,而不是_。您会伤害自己,这是100%正确的。 :)但是,如果您仍在寻找解决方案,这里就是答案。

查找以下文件: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来代替它们。另外,一旦您更新了Wordpress,就需要重新执行此操作。希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.