Как изменить URI для пользовательского типа записи?

12 нояб. 2011 г., 02:13:52
Просмотры: 29.3K
Голосов: 17

Сайт, над которым я работаю, использует следующую структуру "красивых" ЧПУ-ссылок:

http://example.com/blog/my-special-post

Но для пользовательского типа записи мой клиент хотел бы избежать использования "красивого" слага:

http://example.com/product/142

Как можно использовать ID записи вместо слага для пользовательского типа записи?

Я полагаю, что это возможно сделать с помощью WP_Rewrite, но не знаю, с чего начать.

0
Все ответы на вопрос 1
1
37

Вот что я использую для перезаписи URL пользовательских типов записей с ID записи. Вам нужно правило перезаписи (rewrite rule) для обработки URL-запросов, а также фильтр для post_type_link, чтобы возвращать правильные URL при вызовах get_post_permalink():

add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);

function wpse33551_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == 'product' ){
        return home_url( 'product/' . $post->ID );
    } else {
        return $link;
    }
}

add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        'product/([0-9]+)?$',
        'index.php?post_type=product&p=$matches[1]',
        'top' );
}
12 нояб. 2011 г. 04:19:47
Комментарии

Привет @milo, это отлично работает для меня... но я хочу внести некоторые изменения, не мог бы ты помочь?

deemi-D-nadeem deemi-D-nadeem
13 мар. 2015 г. 07:45:42