广告招租A广告招租B广告招租C广告招租D
12
返回列表 发布新帖
楼主: 酱紫-喵

[交流] wordpress的文章ID不连续问题,都是怎么解决的?

发表于 2024-10-12 13:40:12 | 显示全部楼层
新站的话设置文章格式为/%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');
✍ 「老文社区」欢迎您 ...
回复

使用道具 举报

发表于 2024-10-12 13:43:27 | 显示全部楼层
好帖必须得顶起
✍ 「老文社区」欢迎您 ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

[email protected]

@ 本站内容如侵犯您的权益,请联系管理员删除.
© 本站内容均为会员发表,并不代表本站立场!
  • 扫码手机访问
Copyright © 2001-2024 老文社区 版权所有 All Rights Reserved. |网站地图
关灯 快速发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表