之前使用别名,现在想换成id,但要保持原先的别名不变。还是觉得不够好用,留下了不懂技术的眼泪,但比网上抄来抄去的代码好多了。比如wp大学那个,批量移动文章到回收站时会报错。

将以下代码添加到主题的functions.php中:

/**
* WordPress新文章自动使用文章ID作为别名,手动发布没问题,使用rest api不生效
*/
function slug_auto_id($slug, $post_ID, $post_status, $post_type)
{
    // 只对文章且文章id大于129生效,129为最后一篇旧文章的id
    if ($post_type === 'post' && $post_ID > '129') {
        //$slug = get_the_ID();
        $slug = $post_ID;
    }
    return $slug;   
}
add_filter('wp_unique_post_slug', 'slug_auto_id', 10, 6);

有个问题就是时不时提示:此文章在您浏览器中的备份与以下版本不同。

禁用本地自动保存即可:

// 禁用古腾堡本地自动保存
add_filter('block_editor_settings_all', function($settings) {
    $settings['localAutosaveInterval'] = 99999;
    return $settings;
});

其实有个思路就是给新旧文章分别设置固定链接,比如旧文章用默认的别名,新文章用id,但是不知道怎么实现。