如何解决wordpress的文章ID不连续问题

习惯设置wordpress固定链接格式为“/%postid%.html”的用户都会碰到链接数字不连续的问题,这是因为wordpress中添加文章、媒体,用户等等各种操作都会占用id,这时有些强迫症用户就会很不爽,想要给文章链接的数字搞连续起来,这时就可以用奇怪的方法完成。

新站的话设置文章格式为“/%postname%.html”

然后把下面的加入主题functions.php中,其实就是自定义文章别名为数字自增。

function auto_generate_numeric_slug($post_id) {
    // 检查是否是自动保存,避免无限循环
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // 检查当前用户是否有权限编辑文章
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    // 检查文章是否已经有别名(slug),避免重复更新
    $post = get_post($post_id);
    if ($post->post_name) {
        return;
    }

    // 获取文章类型,只为普通文章生成别名
    if (get_post_type($post_id) != 'post') {
        return;
    }

    // 获取最后一篇文章的 ID
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 1, // 只获取最后一篇文章
        'post_status' => 'publish', // 只获取已发布的文章
        'orderby' => 'ID',
        'order' => 'DESC',
        'post__not_in' => array($post_id) // 排除当前文章,防止冲突
    );

    $last_post = get_posts($args);

    // 如果存在文章
    if ($last_post) {
        $last_post_id = $last_post[0]->ID;
        $last_slug = get_post_field('post_name', $last_post_id);

        // 提取数字部分
        if (is_numeric($last_slug)) {
            $last_number = (int)$last_slug;
        } else {
            $last_number = 0;
        }
    } else {
        // 如果没有找到任何文章,起始数字设为 0
        $last_number = 0;
    }

    // 自增数字
    $new_number = $last_number + 1;

    // 更新当前文章的 slug 为自增的数字
    wp_update_post(array(
        'ID' => $post_id,
        'post_name' => $new_number
    ));
}

add_action('save_post', 'auto_generate_numeric_slug');

分享发现

使用wp官方提供的图片CDN加速服务修复微博图床

2023-12-14 14:16:46

WP技巧

使wordpress注册成功后直接显示密码

2017-7-20 14:21:10

个人中心
今日签到
有新私信 私信列表
搜索