Як зробити

Як прибрати назву (slug) кастомного типу контенту з URL

Pinterest LinkedIn Tumblr

Наприклад, стоїть задача, щоб замість посилання 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 – спробуйте просто оновити постійні посилання (меню Налаштування – постійні посилання, а там натиснути Зберегти).

Сподіваємось, код був корисним, поділіться в коментарях, якщо все спрацювало, або якщо виникли якісь помилки і як ви їх виправили.

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

Коментувати