You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress中将带ID的文章编辑URL改为带Slug的形式

解决WordPress用文章Slug直接编辑的问题

WordPress后台的post.php默认只接受文章ID作为post参数,直接传Slug不会生效,得通过自定义代码实现Slug转ID的逻辑:

实现步骤

  • 第一步,在主题的functions.php文件里添加以下代码:
add_action('init', 'slug_to_post_id_edit_redirect');
function slug_to_post_id_edit_redirect() {
    // 只处理后台编辑请求,且post参数不是数字的情况
    if (is_admin() && isset($_GET['action']) && $_GET['action'] === 'edit' && isset($_GET['post']) && !is_numeric($_GET['post'])) {
        $slug = sanitize_text_field($_GET['post']);
        // 根据Slug获取文章ID
        $post_id = get_post_id_from_slug($slug);
        if ($post_id) {
            // 重定向到带ID的编辑URL
            $redirect_url = add_query_arg(['post' => $post_id, 'action' => 'edit'], admin_url('post.php'));
            wp_redirect($redirect_url);
            exit;
        }
    }
}

// 辅助函数:通过Slug获取文章ID
function get_post_id_from_slug($slug) {
    $query = new WP_Query([
        'name' => $slug,
        'post_type' => 'post', // 如果需要支持页面,改成'page'或者数组['post','page']
        'posts_per_page' => 1,
        'fields' => 'ids'
    ]);
    return $query->have_posts() ? $query->posts[0] : false;
}
  • 第二步,保存functions.php后,就可以用https://example.com/wp-admin/post.php?post=MyPostSlug&action=edit这样的URL直接编辑文章了。

注意事项

  • 如果需要支持自定义文章类型,修改get_post_id_from_slug函数里的post_type参数,比如改成['post', 'page', 'your_custom_post_type']。
  • 代码会自动判断post参数是否为数字,是数字的话正常走默认逻辑,不影响原有ID方式的编辑。

内容的提问来源于stack exchange,提问作者EnigmaOs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:01:16