Skip to content

Instantly share code, notes, and snippets.

@mergeweb
Created June 10, 2015 18:31
Show Gist options
  • Save mergeweb/59459f6124527e3ba80f to your computer and use it in GitHub Desktop.
Save mergeweb/59459f6124527e3ba80f to your computer and use it in GitHub Desktop.
function create_post_types() {
register_post_type('degrees-and-programs', [
'labels' => [
'name' => 'Degrees and Programs',
'all_items' => 'All Degrees/Programs'
],
'public' => true,
'has_archive' => true,
'rewrite' => ['slug' => 'degrees-and-programs'],
'hierarchical' => true,
'supports' => ['title', 'thumbnail', 'excerpt', 'page-attributes'],
'exclude_from_search' => false
]);
}
function create_taxonomies() {
register_taxonomy('program-categories', ['degrees-and-programs'], [
'labels' => [
'name' => 'Program Categories'
],
'show_ui' => true,
'show_tagcloud' => false,
'hierarchical' => true,
'rewrite' => [
'slug' => 'programs'
]
]);
}
function taxonomy_slug_rewrite(&$wp_rewrite) {
$rules = [];
$taxonomies = get_taxonomies(['_builtin' => false], 'objects');
$post_types = get_post_types(['public' => true, '_builtin' => false], 'names');
foreach ($post_types as $post_type) {
foreach ($taxonomies as $taxonomy) {
if ($taxonomy->object_type[0] == $post_type) {
$category_settings = ['type' => $post_type, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'category_parent'=>0];
$categories = get_categories($category_settings);
foreach ($categories as $category) {
$rules[$post_type . '/' . $category->slug . '/?$'] = 'index.php?' . $category->taxonomy . '=' . $category->slug;
}
}
}
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'taxonomy_slug_rewrite' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment