【发布时间】:2020-06-10 17:24:00
【问题描述】:
问题
我需要 Wordpress 停止在其 slugs/permalinks 中将下划线变成连字符。
情况
将旧网站移至干净的 Wordpress 安装。旧网站在其网址中使用下划线。我们此时需要保留包括下划线在内的旧网址(请不要在这里推荐任何 SEO 建议,谢谢)。
Wordpress 会清理其 slugs/永久链接。下划线变成连字符。
我希望能够在我的 slug 中同时使用下划线和连字符。我不想完全用另一个替换一个,这是我发现的大多数建议/解决方案归结为的。
不符合我的标准的解决方案示例:
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 中定义了 slugs/permalinks 的清理。
我在这里粘贴了与消毒相关的代码:
我能看到目标下划线的唯一一行是:
$title = preg_replace( '/[^%a-z0-9 _-]/', '', $title );
出于测试目的,我从该行中删除了下划线,替换了服务器上的formatting.php,并尝试再次将下划线放入一个slug 中。但它什么也没做。我也只是根据前面提到的“永久链接中的允许点”链接才发现,该行应该允许在 url 中使用下划线。
这也符合注释内容“* 限制输出为字母数字字符、下划线 (_) 和破折号 (-)。”
所以...此代码表示允许使用下划线(在 slugs/permalinks 中?),但它们仍然在我的 slugs/永久链接中被剥离。
任何人都可以在这里看到我看不到的东西。或者建议一个允许在 slug/permalink 中同时使用下划线和连字符的过滤器?现在我被困住了。
提前感谢您愿意提供的任何帮助。
找到解决方案
Gutenberg 编辑器此时在帖子或页面的 slug 中强制使用连字符:https://github.com/WordPress/gutenberg/issues/13091
就我而言,我启用了经典编辑器插件:https://wordpress.org/plugins/classic-editor/
我将用这种方式重建网站和带有下划线的旧网址。完成后,我将切换回古腾堡。旧的 url 将在未来逐渐被仔细地改变,新的将使用连字符。所以它应该可以解决。
或者,正如用户 @admcfajn 指出的那样,您可以使用快速编辑功能从页面/帖子概览屏幕修改页面/帖子 slug。以这种方式添加到 slug 的下划线将保持不变,即使在古腾堡编辑器处于活动状态时也是如此。
如果您希望将连字符永久替换为下划线,请改用针对此问题提供的解决方案创建过滤器: https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore-in-permalinks
感谢那些花时间回复的人(一位用户删除了他们的回复或将其删除)。我希望其他人将来可以通过 Google 找到此解决方案。
如果开发人员的意图是只允许用户使用连字符,希望 Gutenberg 将得到修复或formatting.php 文件中的注释将被修改以避免混淆。
【问题讨论】:
标签: wordpress permalinks slug wordpress-gutenberg sanitize