有杀气的萝莉 发表于 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->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

好帖必须得顶起
页: 1 [2]
查看完整版本: wordpress的文章ID不连续问题,都是怎么解决的?