Как поменять формат URL для CPT WordPress?

Как поменять формат URL для CPT WordPress?

WordPress по умолчанию при создании пользовательского типа поста (custom post type, CPT) создает URL формата /{post_type}/{slug}.

Но в некоторых ситуациях slug вреден, отсутствует или бесполезен. В общем нужно перезаписать на ID.

Чтобы получить формат URI типа /movie/4231/ где movie — это тип поста, а 4231 это post_id.

В кодексе этот момент обозначен как то мутно, перечитал и испробовал в Интернете множество различных методов, все тщетно и постоянно глючило.

В итоге нашел тот сниппет, который прост и работает:

[php]

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’ );
}

[/php]

Взял тут http://wordpress.stackexchange.com/questions/33551/how-to-rewrite-uri-of-custom-post-type

Ах да, если все сделали, но при октрытии URL получаете 404 ошибку, то пересохраните постоянные ссылки в консоли WordPress (ничего менять не надо):

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

Закрыть меню
×

Корзина