request ); $page = str_replace("https://www.fuselkoenig.de/angebote/whisky/", "", $current_url); /* * sanitization of query variable */ $sort = get_query_var('_sort', 1); switch ( $sort ) { case("price"): case("name"): case("shop"): case("procent"): case("time"): break; default: $sort = ""; break; } /* * sanitization of query variable */ $order = get_query_var('_order', 1); switch ( $order) { case("asc"): case("desc"): break; default: $order = ""; } return "https://angebote.fuselkoenig.de/wp/whisky?page=" . $page . "&_sort=" . $sort . "&_order=" . $order; } function create_offer_post_type() { register_post_type( 'angebote', array( 'labels' => array( 'name' => __('Angebote'), 'singular_name' => __('Angebot') ), 'public' => true, 'has_archive' => true, 'hierarchical' => false, 'taxonomies' => array( 'type' ), 'supports' => array( 'title', 'editor', 'thumbnail', 'comments' ), 'rewrite' => array( #'slug' => 'aangebote/%custom-taxonomy-name%', 'slug' => 'angebote/%type%', 'with_front' => true, ) ) ); // create a new taxonomy register_taxonomy( 'type', 'angebote', array( 'label' => __( 'Type' ), 'hierarchical' => false, 'rewrite' => array( 'slug' => 'angebote', 'with_front' => true ) ) ); } function generate_taxonomy_rewrite_rules( $wp_rewrite ) { $rules = array(); $post_types = get_post_types( array( 'name' => 'angebote', 'public' => true, '_builtin' => false ), 'objects' ); $taxonomies = get_taxonomies( array( 'name' => 'type', '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; } } } } $wp_rewrite->rules = $rules + $wp_rewrite->rules; } function post_link_includes_taxonomy( $post_link, $id = 0 ){ $post = get_post($id); if ( is_object( $post ) ){ $terms = wp_get_object_terms( $post->ID, 'type' ); file_put_contents("/tmp/wp.debug", json_encode($terms)); if( $terms ){ # file_put_contents("/tmp/wp.debug", str_replace( 'angebote/' , 'angebote/' . $terms[0]->slug , $post_link )); # return $post_link; # return str_replace( '/angebote/' , '/angebote/' . $terms[0]->slug . '/', $post_link ); return str_replace( '%type%' , $terms[0]->slug, $post_link ); } else { return str_replace( '%type%' , '', $post_link ); } } return $post_link; } add_action('init', 'create_offer_post_type'); add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules'); add_filter( 'post_type_link', 'post_link_includes_taxonomy', 1, 3 );