WordPress添加一个新的分类时,会使用分类的名称,经过一些过滤(比如空格,已经不适合在url中出现的特殊字符)作为分类的别名(slug),这个字段非常重要,因为他会出现在url中。在英文语境下这似乎没有什么问题,但是作为我们中文使用者,就很尴尬了,这会导致在url中经常会出现中文字符,看起来很别扭。其实稍作修改,就可以让wordpress使用分类的ID作为别名,这样在url中就不会出现中文了。

function set_category_slug($term_id, $tt_id, $taxonomy) {
    if ($taxonomy === 'category') {
        $term = get_term($term_id, $taxonomy);
        $original_slug = $term->slug;
        
        // 判断slug是否包含中文
        if (!preg_match('/[\x{4e00}-\x{9fa5}]/u', $original_slug)) {
            $new_slug = $term_id;
            wp_update_term($term_id, $taxonomy, array('slug' => $new_slug));
        }
    }
}
add_action('create_term', 'set_category_slug', 10, 3);

将以上代码,添加至functions.php中,如果slug中包含中文名称,就会自动更改,使用分类的ID作为slug。

此作者没有提供个人介绍。
最后更新于 2023-08-09