Поддержка Проблемы и решения Как удалить slug у custom post type?

  • Привет всем! Давно мучает вопрос, как удалить slug у произвольного типа записи. Он подставляется автоматически в url каждой записи.
    Сейчас ссылка в таком формате mysite.ru/games/sport/fifa
    games — custom post type,
    sport — название таксономии
    fifa — запись
    а надо сделать как то в таком формате
    mysite.ru/sport/fifa

    Подскажите как вы это делаете, свои варианты? Спасибо всем за ответы.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Можно попробовать при создании custom post type указать slug = /:

    'rewrite' => [
      'slug' => '/',
      'with_front' => false
    ]

    Либо убрать с помощью функции (вставить код в файл functions.php своей текущей темы):

    function games_remove_slug( $post_link, $post, $leavename ) {
        if ( 'games' != $post->post_type || 'publish' != $post->post_status ) {
            return $post_link;
        }
        $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
        return $post_link;
    }
    add_filter( 'post_type_link', 'games_remove_slug', 10, 3 );

    Чтобы после этого не возникало 404 ошибки, нужно ниже добавить такой код:

    function games_parse_request( $query ) {
        if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
            return;
        }
        if ( ! empty( $query->query['name'] ) ) {
            $query->set( 'post_type', array( 'post', 'games', 'page' ) );
        }
    }
    add_action( 'pre_get_posts', 'games_parse_request' );

    Ну и обновить настройки в меню Настройки -> Постоянные ссылки.

    добавление любого кода в любой файл текущей темы продержится ровно до первого обновления темы.
    И почему вас так тянет гадить в этот файл?

    Atrax

    (@atrax)

    Ethical engineer

    И почему вас так тянет гадить в этот файл?

    Плагинофобия, может быть?

    Плагинофобия

    Клин клином вышибают. Если уж «гадить» в function.php, то это надо делать с помощью плагина типа https://ru.wordpress.org/plugins/code-snippets/

    • Ответ изменён 6 месяцев назад пользователем O.

    А если у них кастомная тема, которую они сами создали и сами дорабатывают, то можно и в functions.php

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Как удалить slug у custom post type?» закрыта для новых ответов.