beget banner 468x60beget banner 728x90beget banner 930x180etxt banner 468x60etxt banner 728x90etxt banner 930x180kwork banner 468x60kwork banner 728x90kwork banner 930x180

Как добавить post_id в url для кастомных записей в WordPress

При создании нового типа постов функцией 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

etxt banner 480x320etxt banner 728x90etxt banner 120x600smsc banner 480x320smsc banner 728x90smsc banner 120x600kwork banner 480x320kwork banner 728x90kwork banner 120x600

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

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

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

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

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

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

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

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

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

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

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