我正在WordPress中构建一个LMS类型的系统,由Custom Post types
.
调用post类型Lessons
(有一点courses
) 它有一个custom taxonomy
(类别)调用courses
.
域url结构现在显示为:
domain.com/courses/lesson-name
.
我希望它成为:
domain.com/courses/[course-name{category}]/lesson-name
或者本质上:
/[cpt]/%category%/%postname%/
这是我写的插件,它控制CPTs
现在
function rflms_post_type() {
$labels = array(
\'name\' => _x( \'Lessons\', \'Post Type General Name\', \'text_domain\' ),
\'singular_name\' => _x( \'Lesson\', \'Post Type Singular Name\', \'text_domain\' ),
\'menu_name\' => __( \'Lessons\', \'text_domain\' ),
\'parent_item_colon\' => __( \'Parent Product:\', \'text_domain\' ),
\'all_items\' => __( \'All Lessons\', \'text_domain\' ),
\'view_item\' => __( \'View Lesson\', \'text_domain\' ),
\'add_new_item\' => __( \'Add New Lesson\', \'text_domain\' ),
\'add_new\' => __( \'New Lesson\', \'text_domain\' ),
\'edit_item\' => __( \'Edit Lesson\', \'text_domain\' ),
\'update_item\' => __( \'Update Lesson\', \'text_domain\' ),
\'search_items\' => __( \'Search Lessions\', \'text_domain\' ),
\'not_found\' => __( \'No Lessons Found\', \'text_domain\' ),
\'not_found_in_trash\' => __( \'No Lessons Found in Trash\', \'text_domain\' ),
);
$args = array(
\'label\' => __( \'Lessons\', \'text_domain\' ),
\'description\' => __( \'Referable Lessons\', \'text_domain\' ),
\'labels\' => $labels,
\'hierarchical\' => false,
\'public\' => true,
\'show_ui\' => true,
\'show_in_menu\' => true,
\'show_in_nav_menus\' => true,
\'show_in_admin_bar\' => true,
\'supports\' => array(\'premise-member-access\', \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'comments\'),
\'menu_position\' => 5,
\'menu_icon\' => null,
\'can_export\' => true,
\'has_archive\' => true,
\'exclude_from_search\' => false,
\'publicly_queryable\' => true,
\'capability_type\' => \'post\',
\'rewrite\' => array(\'slug\' => \'courses\'),
);
register_post_type( \'lessons\', $args );
// Hook into the \'init\' action
}
add_action( \'init\', \'rflms_post_type\', 0 );
// Register Custom Taxonomy
function custom_taxonomy() {
$labels = array(
\'name\' => _x( \'Courses\', \'Taxonomy General Name\', \'text_domain\' ),
\'singular_name\' => _x( \'Course\', \'Taxonomy Singular Name\', \'text_domain\' ),
\'menu_name\' => __( \'Courses\', \'text_domain\' ),
\'all_items\' => __( \'All Courses\', \'text_domain\' ),
\'parent_item\' => __( \'Parent Course\', \'text_domain\' ),
\'parent_item_colon\' => __( \'Parent Course:\', \'text_domain\' ),
\'new_item_name\' => __( \'New Course Name\', \'text_domain\' ),
\'add_new_item\' => __( \'Add New Course\', \'text_domain\' ),
\'edit_item\' => __( \'Edit Course\', \'text_domain\' ),
\'update_item\' => __( \'Update Course\', \'text_domain\' ),
\'separate_items_with_commas\' => __( \'Separate Courses with commas\', \'text_domain\' ),
\'search_items\' => __( \'Search Courses\', \'text_domain\' ),
\'add_or_remove_items\' => __( \'Add or Remove Courses\', \'text_domain\' ),
\'choose_from_most_used\' => __( \'Choose from Most Used courses\', \'text_domain\' ),
);
$args = array(
\'labels\' => $labels,
\'hierarchical\' => true,
\'public\' => true,
\'show_ui\' => true,
\'show_admin_column\' => true,
\'show_in_nav_menus\' => true,
\'show_tagcloud\' => false,
\'rewrite\' => array(\'slug\' => \'courses\'),
);
register_taxonomy( \'course\', \'lessons\', $args );
}
// Hook into the \'init\' action
add_action( \'init\', \'custom_taxonomy\', 0 );
SO网友:Varsha Dhadge
找到解决方案了!
要使自定义post类型具有层次结构永久链接,请安装自定义post类型永久链接(https://wordpress.org/plugins/custom-post-type-permalinks/) 插件。
更新注册职位类型。我将帖子类型名称作为帮助中心
function help_centre_post_type(){
register_post_type(\'helpcentre\', array(
\'labels\' => array(
\'name\' => __(\'Help Center\'),
\'singular_name\' => __(\'Help Center\'),
\'all_items\' => __(\'View Posts\'),
\'add_new\' => __(\'New Post\'),
\'add_new_item\' => __(\'New Help Center\'),
\'edit_item\' => __(\'Edit Help Center\'),
\'view_item\' => __(\'View Help Center\'),
\'search_items\' => __(\'Search Help Center\'),
\'no_found\' => __(\'No Help Center Post Found\'),
\'not_found_in_trash\' => __(\'No Help Center Post in Trash\')
),
\'public\' => true,
\'publicly_queryable\'=> true,
\'show_ui\' => true,
\'query_var\' => true,
\'show_in_nav_menus\' => false,
\'capability_type\' => \'page\',
\'hierarchical\' => true,
\'rewrite\'=> [
\'slug\' => \'help-center\',
"with_front" => false
],
"cptp_permalink_structure" => "/%help_centre_category%/%post_id%-%postname%/",
\'menu_position\' => 21,
\'supports\' => array(\'title\',\'editor\', \'thumbnail\'),
\'has_archive\' => true
));
flush_rewrite_rules();
}
add_action(\'init\', \'help_centre_post_type\');
这是注册分类法
function themes_taxonomy() {
register_taxonomy(
\'help_centre_category\',
\'helpcentre\',
array(
\'label\' => __( \'Categories\' ),
\'rewrite\'=> [
\'slug\' => \'help-center\',
"with_front" => false
],
"cptp_permalink_structure" => "/%help_centre_category%/",
\'hierarchical\' => true,
\'public\' => true,
\'show_ui\' => true,
\'show_admin_column\' => true,
\'show_in_nav_menus\' => true,
\'query_var\' => true
)
);
}
add_action( \'init\', \'themes_taxonomy\');
这条线让你的permalink工作
"cptp_permalink_structure" => "/%help_centre_category%/%post_id%-%postname%/",
您可以删除
%post_id%
并且可以保持
/%help_centre_category%/%postname%/"
别忘了冲洗仪表板上的永久链接。