【问题标题】:Wordpress: allow underscore in slugWordpress:在 slug 中允许下划线
【发布时间】: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 的清理。

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

https://pastebin.com/jRqV8iB8

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

$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


    【解决方案1】:

    我也更新了我的原始帖子,但添加了一个可接受的答案以提高知名度。


    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 文件中的注释将被修改以避免混淆。

    【讨论】:

      【解决方案2】:

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

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

      你提到:

      Wordpress 会清理其 slugs/永久链接。下划线变成连字符。

      ...这不是 WordPress 的预期行为,它是由插件、主题或其他东西引起的...但这不是 WordPress 预期的工作方式。


      尝试以下方法:

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

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

      【讨论】:

      • 感谢您的回复!禁用插件的主题 2020:没有骰子。在不同的主机上尝试了另一个网站,同样的问题。但两者都使用古腾堡。然后我发现:github.com/WordPress/gutenberg/issues/13091我安装了经典编辑器插件并再次尝试。完全没有问题,并且使用下划线(或与连字符混合)成功保存了蛞蝓。您的回复帮助我进一步调查。就我而言,我将使用经典编辑器重新创建旧网址并在完成后切换到古腾堡。希望这将在未来对其他人有所帮助。
      • 太棒了!当我测试这个时,我正在使用 Gutenberg 进行测试......但我也在从 all-post wp-admin 页面的快速编辑视图中编辑 url-slug。我找不到通过后期编辑页面编辑 slug 的好方法。您可以回答自己的问题,也许您应该将您的发现作为答案发布并接受它?
      • 啊,是的。您需要将鼠标悬停和/或单击编辑屏幕上帖子/页面标题上方的空白区域。古腾堡的另一个特点引起了一些讨论。 :) 我需要等待一段时间才能接受我自己的答案。无论哪种方式,我希望它可以帮助一些人。您花时间回复并重申应该可以使用下划线,从而帮助我摆脱困境。非常感谢。
      猜你喜欢
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2016-03-21
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多