Я работаю на сайте Wordpress с каталогом курсов (пользовательский тип записи). Каждый курс имеет прикрепленные «course_prefix» и «course_code», которые применяются расширенными настраиваемыми полями. Я хотел бы заменить название курса в постоянной ссылке на префикс и код. Я использовал плагин для создания тега перезаписи для course_code, так как это просто текстовое поле. Course_prefix - это таксономия, поэтому мне пришлось создать собственное правило, чтобы получить имя префикса из возвращенного идентификатора префикса.
add_rewrite_tag( '%course_prefix%', 'v/([^/]+)' );
add_filter( 'post_type_link', function( $url, $post ){
if ( 'course' === $post->post_type ) {
$term_id = get_field( 'course_prefix');
$term = get_term( $term_id );
$value = $term->name;
$url = str_replace( '%course_prefix%', $value, $url );
}
return $url;
}, 10, 2 );
Это преобразует xyz.com/study/courses/COURSE-NAME
в xyz.com/study/courses/MATH-1102
, что является префектом, за исключением того, что теперь сообщения приводят к 404 ошибкам. Я уже сбросил постоянные ссылки.
Мне кажется, что я что-то упускаю из-за правил перезаписи, чтобы сообщить сайту, к каким сообщениям прикреплены эти URL-адреса. Есть ли какие-нибудь ниндзя API для переписывания WordPress, которые могут помочь?