При создании нового типа постов функцией register_post_type() за формирование url в основном отвечает аргумент rewrite. Например, при регистрации типа записи project, по умолчанию в этом параметре отображается название типа записи:

http://site.loc/project/project-example/

В параметре rewrite можно указывать плейсхолдеры типа %category%. Но их нужно создать с помощью add_rewrite_tag() и научить WP их понимать.

Чтобы вместо project-example, в url отображался текущий id записи, добавим:

'rewrite' => array( 'slug' => 'projects' )

И допишем необходимые правила реврайтов в functions.php

// Rewrite permalink structure
function projects_rewrite() {
    global $wp_rewrite;
    $queryarg = 'post_type=project&p=';
    $wp_rewrite->add_rewrite_tag( '%cpt_id%', '([^/]+)', $queryarg );
    $wp_rewrite->add_permastruct( 'projects', '/projects/%cpt_id%/', false );
}
add_action( 'init', 'projects_rewrite' );

function projects_permalink( $post_link, $id = 0, $leavename ) {
    global $wp_rewrite;
    $post = get_post( $id );
    if ( is_wp_error( $post ) )
        return $post;
        $newlink = $wp_rewrite->get_extra_permastruct( 'projects' );
        $newlink = str_replace( '%cpt_id%', $post->ID, $newlink );
        $newlink = home_url( user_trailingslashit( $newlink ) );
    return $newlink;
}
add_filter('post_type_link', 'projects_permalink', 1, 3);

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

Теперь ссылка на проект будет выглядеть так:

http://site.loc/project/10/

За решение спасибо: stackoverflow.com/questions/25199501/wordpress-custom-type-append-post-id-at-the-end

Похожие посты

Как сделать webp без плагинов в WordPress

WebP — это современный формат сжатия изображений без потери качества, который напрямую влияет на скорость загрузки сайта. Конвертирование изображений из jpg и png в формат webp может дать существенный прирост в баллах по google page speed. Формат webp поддерживается большинством современных браузеров. Вы без труда можете найти плагины, которые помогут вам автоматически конвертировать изображения, добавленные…

Как вывести все изображения из произвольной папки без плагинов в WordPress

При разработке своих сайтов вам может понадобиться вывести галереи изображений из произвольных папок без их загрузки в библиотеку. Давайте рассмотрим пример, как это сделать с помощью шорткода: Использование: [folder-gallery path=’/data/images/’] Как видите, функция принимает путь до искомой папки (обязательно с открывающим и закрывающим слешем), в функции устанавливаются разрешенные типы изображений и формируется вывод с классами…

Как изменить выравнивание и размер изображения при вставке в редактор WordPress

При добавлении изображения в пост, по умолчанию WordPress вставляет его в размере medium и без выравнивания. Чтобы при загрузке картинки ей прописывалось выравнивание по центру и полный размер, вы можете использовать такой код:

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *