Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $args = array(
- 'labels' => $labels,
- 'hierarchical' => true,
- 'public' => true,
- 'show_ui' => true,
- 'show_admin_column' => true,
- 'show_in_nav_menus' => true,
- 'show_tagcloud' => true,
- 'rewrite' => array( 'slug' => 'filter', 'with_front' => false ),
- );
- register_taxonomy( 'service', 'filter', $args );
- /* Register CPT
- */
- function wpse_138987_post_type_filter() {
- register_post_type('filter', array(
- 'labels' => array(
- 'name' => 'Filter',
- 'all_items' => 'All Posts'
- ),
- 'public' => true
- ));
- }
- add_action('init', 'wpse_138987_post_type_filter');
- // register taxonomy
- function wpse_138987_taxonomy_service() {
- register_taxonomy('service', array('filter'), array(
- 'labels' => array(
- 'name' => 'Service'
- ),
- 'hierarchical' => true,
- 'public' => true,
- 'show_ui' => true,
- 'show_admin_column' => true,
- 'show_in_nav_menus' => true,
- 'show_tagcloud' => true,
- 'rewrite' => array('slug' => 'filter')
- ));
- }
- add_action('init', 'wpse_138987_taxonomy_service');
- /*
- * Replace Taxonomy slug with Post Type slug in url
- */
- function taxonomy_slug_rewrite($wp_rewrite) {
- $rules = array();
- // get all custom taxonomies
- $taxonomies = get_taxonomies(array('_builtin' => false), 'objects');
- // get all custom post types
- $post_types = get_post_types(array('public' => true, '_builtin' => false), 'objects');
- foreach ($post_types as $post_type) {
- foreach ($taxonomies as $taxonomy) {
- // go through all post types which this taxonomy is assigned to
- foreach ($taxonomy->object_type as $object_type) {
- // check if taxonomy is registered for this custom type
- if ($object_type == $post_type->rewrite['slug']) {
- // get category objects
- $terms = get_categories(array('type' => $object_type, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0));
- // make rules
- foreach ($terms as $term) {
- $rules[$object_type . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
- }
- }
- }
- }
- }
- // merge with global rules
- $wp_rewrite->rules = $rules + $wp_rewrite->rules;
- }
- add_filter('generate_rewrite_rules', 'taxonomy_slug_rewrite');
- archive-filter.php
- single-filter.php
- taxonomy-service.php
- function generate_taxonomy_rewrite_rules( $wp_rewrite ) {
- $rules = array();
- $post_types = get_post_types( array( 'name' => 'portfolio', 'public' => true, '_builtin' => false ), 'objects' );
- $taxonomies = get_taxonomies( array( 'name' => 'services', 'public' => true, '_builtin' => false ), 'objects' );
- foreach ( $post_types as $post_type ) {
- $post_type_name = $post_type->name; // 'developer'
- $post_type_slug = $post_type->rewrite['slug']; // 'developers'
- foreach ( $taxonomies as $taxonomy ) {
- if ( $taxonomy->object_type[0] == $post_type_name ) {
- $terms = get_categories( array( 'type' => $post_type_name, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0 ) );
- foreach ( $terms as $term ) {
- $rules[$post_type_slug . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
- $rules[$post_type_slug . '/' . $term->slug . '/page/?([0-9]{1,})/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug . '&paged=' . $wp_rewrite->preg_index( 1 );
- }
- }
- }
- }
- $wp_rewrite->rules = $rules + $wp_rewrite->rules;
- }
- add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules');
- function generate_taxonomy_rewrite_rules( $wp_rewrite ) {
- $rules = array();
- $post_types = get_post_types( array('public' => true, '_builtin' => false ), 'objects' );
- $taxonomies = get_taxonomies( array('public' => true, '_builtin' => false ), 'objects' );
- foreach ( $post_types as $post_type ) {
- $post_type_name = $post_type->name;
- $post_type_slug = $post_type->rewrite['slug'];
- foreach ( $taxonomies as $taxonomy ) {//echo 'DDDDD'; print_r($taxonomy);
- if ( $taxonomy->object_type[0] == $post_type_name ) {
- $terms = get_categories( array( 'type' => $post_type_name, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0 ) );
- //print_r($terms);
- foreach ( $terms as $term ) {
- $rules[ $taxonomy->name.'/'. $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
- $rules[ $taxonomy->name.'/'. $term->slug . '/page/?([0-9]{1,})/?$'] = 'index.php?'.'type='.$post_type_name."&" . $term->taxonomy . '=' . $term->slug . '&paged=' . $wp_rewrite->preg_index( 1 );
- }
- }
- }
- }
- $wp_rewrite->rules = $rules + $wp_rewrite->rules;
- }
- add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules');
Add Comment
Please, Sign In to add comment