Наприклад, стоїть задача, щоб замість посилання https://wordpress.co.ua/travel-post-type/italy-tour/
у вас посилання на сторінку туру в Італію виглядало аналогічно посиланню на стандартні сторінки WordPress, якось так https://wordpress.co.ua/italy-tour/
Це також може бути застосовано до товарів в магазині на Woocommerce, наприклад, щоб посилання було https://wordpress.co.ua/iphone-15/
замість https://wordpress.co.ua/product/iphone-15/
Як завжди, перед будь-якими змінами необхідно зробити бекап. Також зауважимо, що зміни в урл можуть вплинути на продуктивність сайту, а також на позиції в пошукових системах, якщо ваш сайт вже проіндексовано.
Отже для вирішення нашої задачі нам допоможе наступний код, який потрібно додати у functions.php вашого шаблону:
function wpcoua_remove_posttype_slug( $post_link, $post, $leavename ) {
$cpt_slug = 'your-post-type';
if ( ! in_array( $post->post_type, array( $cpt_slug ) ) || 'publish' != $post->post_status )
return $post_link;
$post_link = str_replace( "/{$cpt_slug}/", '/', $post_link );
return $post_link;
}
add_filter( 'post_type_link', 'wpcoua_remove_posttype_slug', 10, 3 );
function wpcoua_parse_request_posttype( $query ) {
$cpt_slug = 'your-post-type';
if ( ! $query->is_main_query() )
return;
if ( 2 != count( $query->query )
|| ! isset( $query->query['page'] ) )
return;
if ( ! empty( $query->query['name'] ) )
$query->set( 'post_type', array( 'post', 'page', $cpt_slug ) );
}
add_action( 'pre_get_posts', 'wpcoua_parse_request_posttype' );
Code language: PHP (php)
Якщо після змін ваші кастомні пости чи продукти не відкриваються і ви отримуєте помилку 404 – спробуйте просто оновити постійні посилання (меню Налаштування – постійні посилання, а там натиснути Зберегти).
Сподіваємось, код був корисним, поділіться в коментарях, якщо все спрацювало, або якщо виникли якісь помилки і як ви їх виправили.