一般而言,WordPress本身会对英语用户的体验进行优化,例如默认模板的分隔符永远都是“|”,因为英文单词以空格空开,要区分两个单词不可能用“-”,因此“|”是最好的选择。同样,为了让URL更符合浏览器解析和用户的识别,wordpress默认会将标题中的英文大写字母lower到小写。
然而对于中文网站来说,这或许不是一件很好的是,如果要在URL中使用中文,那么使用大写也是常有的,这里提供一种取消wordpress自动降级字母大写的方法。
remove_filter( 'sanitize_title', 'sanitize_title_with_dashes' ); add_filter( 'sanitize_title', 'use_capital_letter_in_slug' ); function use_capital_letter_in_slug($title) { $title = strip_tags($title); // Preserve escaped octets. $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); // Remove percent signs that are not part of an octet. $title = str_replace('%', '', $title); // Restore octets. $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); $title = remove_accents($title); if (seems_utf8($title)) { //if (function_exists('mb_strtolower')) { // $title = mb_strtolower($title, 'UTF-8'); //} $title = utf8_uri_encode($title, 200); } //$title = strtolower($title); $title = preg_replace('/&.+?;/', '', $title); // kill entities $title = str_replace('.', '-', $title); // Keep upper-case chars too! $title = preg_replace('/[^%a-zA-Z0-9 _-]/', '', $title); $title = preg_replace('/s+/', '-', $title); $title = preg_replace('|-+|', '-', $title); $title = trim($title, '-'); return $title; }
将上面的代码拷贝到你的主题文件functions.php中,它即可取消wordpress对postname的格式化,同样,它也对分类、标签等的别名起作用。
WordPress
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。