Я бы реализовал это примерно так:
$posts = get_posts( array(
'numberposts' => - 1,
'post_type' => 'post',
'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
) );
foreach ( $posts as $post ) {
setup_postdata( $post );
if ( strpos( $post->name, 'trololo' ) ) {
$i ++;
$new_name = $post->name . '-' . $i;
// Создаем массив данных
$my_post = array();
$my_post['ID'] = $post->ID;
$my_post['post_name'] = $new_name;
}
// Обновляем данные в БД
wp_update_post( wp_slash( $my_post ) );
}
wp_reset_postdata(); // сброс