Custom taxonomy rewrite in permalinks for posts gives 404 on pages

Question

So I’ve got a custom taxonomy (called “version”) for just posts wich works fine.. My Problem is that i want to use this tax in my permalinks eg URL.com/12-3/cat/postname.. which works also fine for the posts when i use /%version%/%category%/%postname%/for the permalinks.

BUT now every pages throws me an 404 error.. (eg URL.com/test -> 404). If i remove /%version% it works fine.. but just for the pages.. but i need the version tax in the URL for the posts.. The Code below is used for the tax slugs in the permalinks:

add_filter('post_link', 'version_permalink', 10, 3);
function version_permalink($permalink, $post_id, $leavename) {
    if (strpos($permalink, '%version%') === FALSE) {
        return $permalink;
    } else {

        // Get post
        $post = get_post($post_id);
        if (!$post || 'page' === $post->post_type) return $permalink;

        // Get taxonomy terms
        $terms = wp_get_object_terms($post->ID, 'version');
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) {
            $taxonomy_slug = $terms[0]->slug;
        } else { $taxonomy_slug = 'no-version'; }

        return str_replace('%version%', $taxonomy_slug, $permalink);
    }
}

I guess i made some stupid error i’m not aware of.. When i looked at the var_dump($wp); it shows me eg (for URL.com/impressum):

["query_vars"]=>
  array(1) {
    ["version"]=>
    string(9) "impressum"
  }
  ["query_string"]=>
  string(17) "version=impressum"
  ["request"]=>
  string(9) "impressum"
  ["matched_rule"]=>
  string(10) "([^/]+)/?$"
  ["matched_query"]=>
  string(17) "version=impressum"
  ["did_permalink"]=>
  bool(true)

so the “version” thingy is just registered for posts not pages but its still looking it up… I’ve got no clue to solve this, any help or some more insights are much appreciated 🙂

fyi the custom taxonomy:

add_action('init', 'version_init');
function version_init() {
    if (!is_taxonomy('version')) {
        $labels = array(
            'name'                       => __( 'Versionen'),
            'singular_name'              => __( 'Version'),
            'search_items'               => __( 'Versionen suchen' ),
            'popular_items'              => __( 'Oft genutzte Versionen' ),
            'all_items'                  => __( 'Alle Versionen' ),
            'parent_item'                => null,
            'parent_item_colon'          => null,
            'edit_item'                  => __( 'Version bearbeiten' ),
            'update_item'                => __( 'Version aktualisieren' ),
            'add_new_item'               => __( 'Neue Version hinzufuegen' ),
            'new_item_name'              => __( 'Neue Version hinzufuegen' ),
            'add_or_remove_items'        => __( 'Version hinzufuegen oder bearbeiten' ),
            'choose_from_most_used'      => __( 'Die meistgenutzte Versionen aussuchen' ),
            'not_found'                  => __( 'Keine Versionen gefunden.' ),
            'menu_name'                  => __( 'Versionen' ),
        );
        $rewrite = array(
            'slug'                       => '',
            'with_front'                 => false,
            'hierarchical'               => false,
        );
        register_taxonomy( 'version', 'post',
                          array(
                              'hierarchical' => TRUE,
                              'labels' => $labels,
                              'public' => TRUE,
                              'show_ui' => TRUE,
                              'show_admin_column' => TRUE,
                              'update_count_callback' => '_update_post_term_count',
                              'query_var' => 'version',
                              'rewrite' => $rewrite
                          )
                         );
    }
}
0
, , Benjamin Bohm 3 years 2020-05-30T00:11:24-05:00 0 Answers 91 views 0

Leave an answer

Browse
Browse