Вот этот скрипт выполненный на mysql должен ко всем именам постов добавить цифру если есть дубль. Времени уже нет поэтому сильно не проверял лучше на бекапе проверить.
DELIMITER $$
DROP PROCEDURE IF EXISTS p2;
CREATE PROCEDURE `p2` ()
BEGIN
DECLARE var_id int;
DECLARE var_name varchar(200);
DECLARE new_name varchar(200);
DECLARE exist int;
DECLARE counter int;
DECLARE cursor_i CURSOR FOR
SELECT
p.ID, p.post_name
FROM
wp_posts p
WHERE
p.post_type = 'post' AND p.post_status = 'publish';
OPEN cursor_i;
read_loop: LOOP
FETCH cursor_i INTO var_id, var_name;
SET new_name = var_name;
SET counter = 0;
check_double: LOOP
SELECT COUNT(*) FROM wp_posts p WHERE p.post_type = 'post' AND p.post_status = 'publish' AND p.post_name = new_name INTO exist;
IF (exist > 0) THEN
SET counter = counter + 1;
SET new_name = CONCAT(var_name, counter);
ITERATE check_double;
/*LEAVE check_double;*/
END IF;
UPDATE wp_posts p SET p.post_name = new_name WHERE p.ID = var_id;
INSERT INTO qq (ss) VALUES(new_name);
LEAVE check_double;
END LOOP check_double;
END LOOP read_loop;
CLOSE cursor_i;
END$$
CALL p2;