重写 slug 添加分类名称调用 archive.php 而不是 single.php WordPress
Rewrite slug adding taxonomy name call archive.php instead of single.php WordPress
我为 E.G. 添加了自定义 post 类型。电影并注册自定义分类法。
我正在通过在 post 类型 slug 之前添加自定义分类名称来重写 slug。
我在寄存器中添加了重写参数 post 类型:
'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
但是,问题是当我查看 post 时它调用了 archive.php 而不是 single.php 并且还像存档页面一样执行并显示所有页面。
请提供一些解决方案。接受任何建议。
谢谢
自主研发得到答案,需要修改:
add_rewrite_rule( '^movies/(.*)/(.*)/([^/]+)/?$','index.php?type=$matches[2]', 'top' );
收件人:
add_rewrite_rule( '^movies/(.*)/([^/]+)/?$','index.php?movies=$matches[2]', 'top' );
我为 E.G. 添加了自定义 post 类型。电影并注册自定义分类法。
我正在通过在 post 类型 slug 之前添加自定义分类名称来重写 slug。
我在寄存器中添加了重写参数 post 类型:
'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
但是,问题是当我查看 post 时它调用了 archive.php 而不是 single.php 并且还像存档页面一样执行并显示所有页面。
请提供一些解决方案。接受任何建议。
谢谢
自主研发得到答案,需要修改:
add_rewrite_rule( '^movies/(.*)/(.*)/([^/]+)/?$','index.php?type=$matches[2]', 'top' );
收件人:
add_rewrite_rule( '^movies/(.*)/([^/]+)/?$','index.php?movies=$matches[2]', 'top' );