Wordpress:允许在 slug 中使用下划线

Wordpress: allow underscore in slug

问题

我需要 Wordpress 在其 slugs/permalinks 中停止将下划线转换为连字符。

情况

将旧站点移至干净的 Wordpress 安装。旧网站在其网址中使用下划线。我们此时需要保留包括下划线在内的旧网址(请不要在这里推荐任何 SEO 建议,谢谢)。

Wordpress 清理其 slugs/permalinks。下划线变成连字符。

我希望能够在我的 slug 中同时使用下划线和连字符。我不打算完全替换一个,这是我发现的大多数 suggestions/solutions 归结为。

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

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

我试过的

我一直在寻找解决方案,但找不到令人满意的解决方案。据说 slugs/permalinks 的清理是在 /wp-includes/formatting.php 中使用 sanitize_title_with_dashes 函数定义的。

我在这里粘贴了与消毒相关的代码:

https://pastebin.com/jRqV8iB8

我唯一能看到 targets 下划线的行是:

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

出于测试目的,我从该行删除了下划线,替换了服务器上的 formatting.php 并尝试再次将下划线放入 slug 中。但它什么也没做。我也只是根据前面提到的 "allow dots in permalinks" link 才发现,该行应该允许在 url 中使用下划线。

这也符合评论内容“* Limits the output to alphanumeric characters, underscore (_) and dash (-).”

所以...这段代码表示允许使用下划线(在 slugs/permalinks?),但在我的 slug/permalink 中它们仍然被删除。

谁能在这里看到我看不到的东西。或者建议一个允许在 slug/permalink 中同时使用下划线和连字符的过滤器?现在我卡住了。

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

找到解决方案

Gutenberg 编辑器此时在 post 或页面的段中强制使用连字符:https://github.com/WordPress/gutenberg/issues/13091

就我而言,我启用了经典编辑器插件:https://wordpress.org/plugins/classic-editor/

我会用这种方式重建网站和带有下划线的旧网址。完成后,我将切换回古腾堡。旧的 url 将在未来逐渐小心地更改,新的将使用连字符。所以它应该解决。

或者,正如用户@admcfajn 指出的那样,您可以使用快速编辑功能从 page/post 概览屏幕修改 page/post slug。即使古腾堡编辑器处于活动状态,以这种方式添加到 slug 的下划线也会保留下来。

如果您希望将连字符永久替换为下划线,请改用针对此问题提供的解决方案创建过滤器: https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore-in-permalinks

感谢那些花时间回复的人(一位用户删除了他们的回复或将其删除)。我希望以后其他人能通过Google找到这个解决方案。

如果开发人员的意图是只允许用户使用连字符,希望 Gutenberg 得到修复或修改 formatting.php 文件中的注释以避免混淆。

我们在 WordPress 中同时使用连字符和破折号应该没有任何问题

test_page-of-awesome 的 url-slug 完全有效。所以,我想一定有一个插件或主题中某处的设置正在重写或修改它们。

你提到:

Wordpress cleans up its slugs/permalinks. Underscores are turned into hyphens.

...这不是 WordPress 的预期行为,是由插件、主题或其他原因引起的...但这不是 WordPress 预期的行为工作。


尝试以下操作:

  • 启用核心主题 (twentyninteteen, twentytwenty)
  • 禁用所有插件
  • 确保您能够使用漂亮的永久链接 wp-admin/wp-admin/options-permalink.php 设置 >> 永久链接

& 如果您无法保存 url-slugs 那么问题可能来自您服务器上的其他地方。根据您的网络托管环境的配置,可能还有其他因素会影响 url slug。可能是 apache mod_rewrite 规则或其他东西

我也更新了原来的 post,但添加了一个可接受的答案以提高可见性。


Gutenberg 编辑器此时在 post 或页面的段中强制使用连字符:https://github.com/WordPress/gutenberg/issues/13091

就我而言,我启用了经典编辑器插件:https://wordpress.org/plugins/classic-editor/

我会用这种方式重建网站和带有下划线的旧网址。完成后,我将切换回古腾堡。旧的 url 将在未来逐渐小心地更改,新的将使用连字符。所以它应该会成功。

或者,正如用户@admcfajn 指出的那样,您可以使用快速编辑功能从 page/post 概览屏幕修改 page/post slug。即使古腾堡编辑器处于活动状态,以这种方式添加到 slug 的下划线也会保留下来。

如果您希望将连字符永久替换为下划线,请改为使用针对此问题提供的解决方案创建过滤器:https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore-in-permalinks

感谢那些花时间回复的人(一位用户删除了他们的回复或将其删除)。我希望以后其他人能通过Google找到这个解决方案。

如果开发人员打算只允许用户使用连字符,希望 Gutenberg 得到修复或修改 formatting.php 文件中的注释以避免混淆。