我花了几个小时试图找到这个问题的解决方案,阅读了很多文章,并尝试了许多修复工具'从stackoverflow和其他地方,都没有成功。
我正在尝试为我在Wordpress(版本4.5.3)中创建的自定义帖子类型创建永久链接结构。帖子类型称为'视频'。默认情况下,我的永久链接看起来像' http://localhost.wordpress/videos/my-video-post'。我想替换视频'在与帖子的类别名称的链接中,即 ' http://localhost.wordpress/computer-lessons/my-video-post',其中类别是计算机课程'。我已经能够创建工作永久链接,例如' http://localhost.wordpress/categories/computer-lessons/my-video-post'使用下面的代码,但我想摆脱' / categories /'部分链接。我目前使用的代码是
add_action( 'init', 'video_post_type' );
function video_post_type() {
register_post_type( 'video', array(
'labels' => array(
'name' => 'Videos',
'singular_name' => 'Video',
),
'rewrite' => array('slug' => 'categories/%category%'),
'taxonomies' => array('post_tag', 'category'),
'description' => 'Video resources.',
'public' => true,
'menu_position' => 20,
'supports' => array( 'title', 'editor', 'custom-fields' )
));
}
function videos_post_link( $post_link, $id = 0 ){
$post = get_post($id);
if ( is_object( $post ) ){
$terms = wp_get_object_terms( $post->ID, 'category' );
if( $terms ){
return str_replace( '%category%' , $terms[0]->slug , $post_link );
}
}
return $post_link;
}
add_filter( 'post_type_link', 'videos_post_link', 1, 3 );
我已经尝试了很多这个代码的变种,但每当我得到结构时,我正在寻找固定链接给出404.
我开始认为这可能是不可能的,因为我已经阅读了很多与此相关的文章和帖子,并且没有找到可行的解决方案。
非常感谢提前。
答案 0 :(得分:1)
只需将您的'rewrite' => array('slug' => 'categories/%category%')
部分替换为'rewrite' => array('slug' => '%category%')
,只需离开%category%
即可。
重要提示:毕竟转到固定链接选项并重置它。
您可以在此处找到更多信息Show only specific categories in permalinks for custom post type in WordPress