Обновляем slug всех продуктов

Иногда в начале разработки когда все товары уже добавлены но сайт не открыть в общий доступ, а обнаружилось, что есть ссылки на русском языке, например при импорте товаро. Ситуацию можно исправить простым скриптом в function.php. Он обновит все товары, возьмет заголовок товара, транслитерирует его и добавит в ссылки.


function translit($s) {
    $s = (string) $s; 
    $s = strip_tags($s);
    $s = str_replace(array("\n", "\r"), " ", $s);
    $s = preg_replace("/\s+/", ' ', $s);
    $s = trim($s); 
    $s = function_exists('mb_strtolower') ? mb_strtolower($s) : strtolower($s); 
    $s = strtr($s, [
    'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d',
    'е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i',
    'й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n',
    'о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t',
    'у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch',
    'ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu',
    'я'=>'ya','ъ'=>'','ь'=>''
    ]);
    $s = preg_replace("/[^0-9a-z-_ ]/i", "", $s);
    $s = str_replace(" ", "-", $s); 
    return $s;
}

$posts = get_posts( array (  'numberposts' => -1, 'post_type' => 'product' ) );

foreach ( $posts as $post )
{
    // check the slug and run an update if necessary
    //$new_slug = sanitize_title( $post->post_title );
    $new_slug =translit($post->post_title);


    if ( $post->post_name != $new_slug )
    {

        wp_update_post(
            array (
                'ID'        => $post->ID,
                'post_name' => $new_slug
            )
        );
    }
}