При розробці одно сайту я стикнувся з наступною ситуацією. Сайт існував вже доволі давно і доволі плідно. За цей час опубліковано близько 5000 дописів! Налаштування пермалінків для цього сайту на WordPress виявилось встановленим по замовчуванні. В ході обговорення було вирішено змінити структуру пермалінків на іншу, з вказанням дати та назви новини. Звісно, мною одразу ж було встановлено профільний плагін для транслітерації Ukr-To-Lat. Проте в ході оновлення налаштувань сайта чуда не трапилось 🙂 – заголовки не транслітерувались просто від зміни структури пермалінків!

Яке вирішення? Треба просто оновити кожен допис і тоді заголовок транслітерується. Але у випадку з великою кількістю дописів – це шалені витрати часу на ручне оновлення!! Те саме стосується і тегів (ага, а ви спробуйте, оновити 190 сторінок (1900 тегів) вручну! 🙂 )

Краще рішення – оновити всі записи автоматично. З допомогою скрипта. Ось цим рішенням я і хочу поділитись з вами.
[php]
//Скрипт бере всі пости, затирає пермалінки і оновлює статус постів, таким чином
//формуються нові пермалінки (кириличні або транслітеровані)
require( ‘wp-load.php’ );

$data = array(
‘post_type’ => ‘post’,
‘post_status’ => null,
‘numberposts’ => -1,
);

$new_data = get_posts($data);
//якщо є записи
if ($new_data) {
foreach ($new_data as $posts) {
$posts->post_name = ”; //затираємо пермалінки дял кожного запису
wp_update_post( $posts ); //оновлюємо кожен запис
}
}
[/php]

Оновлюємо теги:
[php]
//Скрипт бере всі теги і оновлює їх пермалінки, таким чином
//формуються нові пермалінки (кириличні або транслітеровані) для тегів
require( ‘wp-load.php’ );

$tags = get_terms( ‘post_tag’, ‘hide_empty=0&fields=ids’ );
//якщо є теги
if ($tags) {
foreach ($tags as $tgs) {
wp_update_term( $tgs, ‘post_tag’, array(‘slug’ => ”) );
}
}
[/php]

Інструкція:
Скопіюйте код (перший або другий в залежності від потреби) у новий файл .php та назвіть його напркилад bulk-update.php. далі завантажте цей файл у кореневу папку інсталяції вашого WP (туди, де є, приміром, файл wp-config.php). Далі запустіть скрипт зайшовши у браузері у новостворений файл. При цьому адреса посилання буде типу: http://ваш_сайт/bulk-update.php. Час виконання скрипта залежить від кількості записів.

Author

Дмитро Кондрюк в веб-індустрії з 2003 року. В 2009р. заснував проект Український WordPress (що у подальшому став офіційним сайтом команди локалізації WordPress в Україні). З 2010 року засновник і технічний директор проекту Український хостинг для WordPress (WPHost.me) - повноцінного хостинг-сервісу, максимально оптимізованого на використання CMS WordPress.

Коментувати