Плагин Cyr-To-Lat - замена Rus-To-Lat и расширенные функции
Опубликовано: 05.09.2018
Плагин Cyr-To-Lat разработан для транслитерации кириллических символов в ссылках в латинские символы. Хотя я всегда пользовался плагином Rus-To-Lat, и даже не подозревал, что есть более интересный и более лёгкий функционал для этих, необходимых каждому блогеру, целей. Плагин Cyr-To-Lat имеет несколько функций, которых нет в Rus-To-Lat. Сейчас мы их рассмотрим, но сначала об установке и настройке – это займёт немного времени и вашего внимания.
Установка плагина происходит так же, как обычно, но намного быстрее и легче другой способ — скачать плагин с официального хранилища плагинов WordPress, а установка плагина пройдёт в автоматическом режиме – вам нужно будет только активировать плагин, а настроек он не требует, кроме некоторых изменений в шаблоне.
Плагин начинает функционировать сразу после активации и настроек не требует, можно только внести некоторые изменения в файл functions.php. Их мы рассмотрим ниже, а теперь несколько слов о тех функциях, которых нет в Rus-To-Lat:
Плагин автоматически после активации преобразует все русские ссылки к записям, меткам и страницам. Для только что созданного блога это преобразование не столь важно, но для тех сайтов, в которых надо преобразовывать несколько сотен (а то и тысяч) страниц с русскоязычными ссылками плагин Cyr-To-Lat будет незаменимым. После конвертации работоспособность старых русскоязычных ссылок будет сохранена, а точнее, пользователь будет перенаправлен со старых адресов на новые. Перенаправление будет осуществляться через 301 редирект ,что очень хорошо для оптимизации сайта, так как не теряется вес ссылок. То есть с точки зрения SEO-оптимизиции ваш ресурс не пострадает. Плагин также проводит транслитерацию названий загружаемых файлов. Так, при загрузке изображения с названием «Блог.gif» вы увидите медиафайл с именем «Блог» и ярлыком «Blog.gif». Плагин Cyr-To-Lat включает в себя символы русского, украинского, белорусского, македонского и болгарского языков. В плагин добавлен фильтр изменения транслитерации. Можно и вручную изменить таблицу в плагине, но фильтром быстрее и надёжнее, потому что при обновлении плагина вам не придётся снова его подправлять. Пользоваться этим фильтром легко — нужно открыть файл functions.php вашей текущей темы и добавить туда код перед закрывающим слэшем ?>: function my_cyr_to_lat_table($ctl_table) { $ctl_table['Ы'] = 'Y'; $ctl_table['ы'] = 'y'; return $ctl_table; } add_filter('ctl_table', 'my_cyr_to_lat_table');Этот код поменяет транслитерацию символов «Ы» и «ы» на «Y» и «y» (по умолчанию эти символы плагин меняет на «YI» и «yi», что, на мой взгляд). Можно также добавить[‘Ь’] = [‘I’].
Транслитерация будет функционировать и при публикации через сервис XML-RPC, что для многих важно – публикации с бирж статей или публикации через клиент Windows Live Writer.Никакой лишней нагрузки на блог плагин не произведёт, так как его код даже легче, чем у Rus-To-Lat.
Перед активацией плагина сделайте на всякий случай бекап БД. Потому что после активации плагин преобразует ссылки на сайте, и если вы потом удалите плагин, то ссылки уже не вернутся. Хотя существует небольшой хак по этому поводу, который поможет вам избежать неожиданностей. Для этого необходимо создать новый файл regenerate-slugs.php в корневом каталоге вашего сайта, скопировать в этот плагин код, который вы видите ниже, и запустить этот файл из адресной строки вашего браузера. Если к моменту выполнения этого скрипта плагин ещё работает, то восстанавливаются только те ссылки, которые преобразовались в автоматическом режиме, а ссылки, которые были указаны вручную или изменены, остаются. Вот код:
<?php require 'wp-load.php'; $cyr2lat_enabled = false; if ( function_exists('ctl_sanitize_title') ) { remove_filter('sanitize_title', 'ctl_sanitize_title', 9); $cyr2lat_enabled = true; } echo "Regenerating post slugs...<br />\n"; $posts = $wpdb->get_results("SELECT ID, post_title, post_name FROM {$wpdb->posts} WHERE post_status = 'publish'"); foreach ( (array) $posts as $post ) { $original_name = sanitize_title($post->post_title); $sanitized_name = $cyr2lat_enabled ? ctl_sanitize_title( urldecode($original_name) ) : ''; if ( $post->post_name == $sanitized_name || empty($sanitized_name) ) { delete_post_meta($post->ID, '_wp_old_slug', $original_name); $wpdb->update( $wpdb->posts, array( 'post_name' => $original_name ), array( 'ID' => $post->ID ) ); } } echo "Regenerating term slugs...<br />\n"; $terms = $wpdb->get_results("SELECT term_id, name, slug FROM {$wpdb->terms}"); foreach ( (array) $terms as $term ) { $original_slug = sanitize_title($term->name); $sanitized_slug = $cyr2lat_enabled ? ctl_sanitize_title( urldecode($original_slug) ) : ''; if ( $term->slug == $sanitized_slug || empty($sanitized_slug) ) { $wpdb->update( $wpdb->terms, array( 'slug' => $original_slug ), array( 'term_id' => $term->term_id ) ); } } echo 'All done!'; ?>