Автоматическая генерация слага (slug)
-
Выбрал ЧПУ /%postname%. Для странички ЧАВО понадобилось сократить слаги, аналогично pastebin (длинные не подходят по стилевому оформлению, да и вообще это некрасиво:)). Написал такое решение (часть одной из сети, второй из Кодекса):
здесь генерируем слагfunction wikicms_generate_slug( $length, $charset='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') { $str = ''; $count = strlen($charset); while ($length--) { $str .= $charset[mt_rand(0, $count-1)]; } return $str; }
здесь его обновляем автоматом
function wikicms_update_slug($post_id) { global $post; if ($post->post_status == 'draft') { remove_action('save_post', 'wikicms_update_slug'); wp_update_post(array('ID' => $post_id, 'post_name' => wikicms_generate_slug(8))); add_action('save_post', 'wikicms_update_slug'); } } add_action('save_post', 'wikicms_update_slug');
Понадобилось решить проблему с заглавными буквами в слаге, сделал так:
remove_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3 );
Посему вопрос к знатокам: Как победить ненужное двойное генерирование слага, во время создания поста и в момент его первого сохранения, и по фильтру, другим способом можно разрешить заглавные буквы?
Просмотр 1 ответа (всего 1)
Просмотр 1 ответа (всего 1)
- Тема «Автоматическая генерация слага (slug)» закрыта для новых ответов.