【问题标题】:How do I use underscore in a wordpress permalink如何在 wordpress 永久链接中使用下划线
【发布时间】:2010-12-16 05:52:18
【问题描述】:

Wordpress 将我的帖子标题转换为一个很棒的永久链接,唯一的事情是我想要下划线而不是连字符,有没有快速的解决方案?

【问题讨论】:

    标签: wordpress permalinks


    【解决方案1】:

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

    【讨论】:

    • 有没有办法在 URL 中也允许破折号和下划线?例如- www.wordpress.com/what_is_yo-ur_name/
    【解决方案2】:

    我不会这样做主要是因为SEO's issues

    你有什么特别的理由这样做吗?我在这里读到的每一个解决方案都是关于破解 wordpress 核心的,每次你更新你的系统时,你都会再次编辑所有这些文件。 (事实上​​,2.8.6 仅可用yesterday。如果您使用的是旧版本,则需要更改两次)。

    【讨论】:

      【解决方案3】:

      在 wp-includes/formatting.php 中查找函数 sanitize_title_with_dashes()

      更改对 preg_replace 的调用以使用下划线而不是连字符。

      【讨论】:

        【解决方案4】:

        我不建议您更改核心 wordpress 文件,一旦您升级您的网站,您将丢失您的工作。你可以做一个插件,或者把它放在你主题的functions.php文件中。

        add_filter( 'sanitize_title', 'dashes_to_underscore' );
        function dashes_to_underscore( $title ){
            return str_replace( '-', '_', $title );
        }
        

        【讨论】:

        • 这会改变所有标题,而不仅仅是永久链接。我发现这个是因为它破坏了我的侧边栏功能。将 sidebar-left 更改为 sidebar_left,但它被注册为 sidebar-left。
        【解决方案5】:
        function sanitize_title_with_underscore( $title )
        {
            $text_to_transform =   sanitize_title_with_dashes( $title);
            return str_replace( '-', '_', $text_to_transform );
        }
        

        【讨论】:

          猜你喜欢
          • 2019-05-23
          • 1970-01-01
          • 1970-01-01
          • 2011-09-03
          • 1970-01-01
          • 2020-08-13
          • 2023-03-14
          • 1970-01-01
          • 2020-03-16
          相关资源
          最近更新 更多