Переписать slug, добавляющий вызов имени таксономии archive.php вместо того , чтобы single.php WordPress

#php #wordpress #url-rewriting #slug

#php #wordpress #url-переписывание #slug

Вопрос:

Я добавил пользовательский тип записи для, например, фильма, а также зарегистрировал пользовательскую таксономию.

Я переписываю slug, добавляя пользовательское имя таксономии перед типом сообщения slug.

Я добавил параметр перезаписи в тип записи регистра:

 'rewrite' => array( 'slug' => 'movie/%tax_name%', 'with_front' => false )
  

и ниже параметр таксономии:

 array(
    'labels'            => $lables,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
    'hierarchical'      => true,
    'has_archive'       => false,
    'rewrite'           => array( 'slug' => 'type', 'with_front' => false )
);
  

Я также добавил следующую строку в действие инициализации:

 add_rewrite_rule( '^movies/(.*)/(.*)/([^/] )/?$','index.php?type=$matches[2]', 'top' );
  

и для действия ‘post_type_link’:

 // Add parent taxonomy name / module name
$terms = wp_get_post_terms( $post->ID, 'type', array() );
$term = isset($terms['0']) ? $terms['0'] : '';
if( !empty($term->slug) ) {
    $link = str_replace( '%tax_name%', $term->slug, $link );
} else {
    $link = str_replace( '/%tax_name%', '', $link );
}
  

И теперь мой URL http://yourdomain.com/movie/fun/movie_name .

Я взял некоторые ссылки отсюда: https://wordpress.stackexchange.com/questions/94817/add-category-base-to-url-in-custom-post-type-taxonomy

Но проблема в том, что когда я просматриваю это сообщение, оно вызывается archive.php вместо того , чтобы single.php а также выполнить как архивную страницу и отобразить все страницы.

Пожалуйста, предоставьте какое-нибудь решение. любые предложения принимаются.

Спасибо

Комментарии:

1. Я напечатал постоянную ссылку для каждой ссылки, и она дает идеальную постоянную ссылку, например: http://yourdomain.com/movie/fun/moviename , но когда я посещаю ее, открывается страница архива.

Ответ №1:

Я получил ответ после самостоятельного исследования и разработки, мне нужно изменить:

 add_rewrite_rule( '^movies/(.*)/(.*)/([^/] )/?$','index.php?type=$matches[2]', 'top' );
  

Для:

 add_rewrite_rule( '^movies/(.*)/([^/] )/?$','index.php?movies=$matches[2]', 'top' );