Mehrere benutzerdefinierte Permalink-Strukturen in WordPress

Lesezeit: 2 Minuten

Ich habe einen benutzerdefinierten Beitragstyp ‘Geschichte’ und zwei Taxonomien, ‘Künstler’ und ‘Schriftsteller’.

Ich habe es geschafft, eine benutzerdefinierte Permalink-Struktur wie z /%Künstler/%Autor%/%Geschichte% indem Sie dies tun (fortgesetzter Code):

    add_action('init', 'custom_init');
    add_filter('post_type_link', 'story_permalink', 10, 3);

    function custom_init(){  
        $story = array(  
        'query_var' => true,
        'rewrite' => false,
        );
        $artist = array(
        'query_var' => true,
        'rewrite' => true
        );
        $writer = array(
            'query_var' => true,
            'rewrite' => true
        );  

        register_post_type('story', $story);
        register_taxonomy('artist', 'story', $artist);
        register_taxonomy('writer', 'story', $writer);

        global $wp_rewrite;
        $story_structure="/%artist%/%writer%/%story%";
        $wp_rewrite->add_rewrite_tag("%story%", '([^/]+)', "story=");
        $wp_rewrite->add_permastruct('story', $story_structure, false);
    }

    function story_permalink($permalink, $post_id, $leavename){
        $post = get_post($post_id);

        $rewritecode = array(
        '%artist%',
        '%writer%',
        $leavename? '' : '%postname%',
        $leavename? '' : '%pagename%',
        );

        if('' != $permalink && !in_array($post->post_status, array('draft', 'pending', 'auto-draft'))){

            if (strpos($permalink, '%artist%') !== FALSE){
            $terms = wp_get_object_terms($post->ID, 'artist');  
            if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $artist = $terms[0]->slug;
            else $artist="unassigned-artist";         
            }

        if (strpos($permalink, '%writer%') !== FALSE){
            $terms = wp_get_object_terms($post->ID, 'writer');  
            if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $writer = $terms[0]->slug;
            else $writer="unassigned-writer";         
        }           

        $rewritereplace = array(
            $artist,
            $writer,
            $post->post_name,
            $post->post_name,
        );
        $permalink = str_replace($rewritecode, $rewritereplace, $permalink);
        }
        else{
        }
        return $permalink;
    }

Das gibt mir so etwas wie /jason/john/die-katze-ist-unter-dem-tisch.

Aber die Strukturen, die ich wirklich brauche, sind:

/Künstler/%Künstler%
/Autoren/%Autor%
/geschichten/%geschichte%

Vielleicht ist es zu einfach, aber ich kann nicht wirklich herausfinden, wie das geht, weil ich nicht weiß, wie ich mit benutzerdefinierten Beitragstypen und Taxonomien in einer homogenisierten benutzerdefinierten Permalink-Struktur umgehen soll.

Jede Hilfe zur Lösung dieses Problems wird sehr geschätzt.

  • Ich habe es bereits geschafft, dies zu lösen, weiß aber nicht, ob es der richtige Weg ist. Falls jemand die Lösung braucht, kann ich sie posten.

    Benutzer465316

    5. Oktober 2010 um 7:44 Uhr

  • Hi! Ich würde gerne einen Blick auf Ihre Lösung werfen, wenn es Ihnen nichts ausmacht? Kannst du es bitte posten?

    – BaronVonKaneHoffen

    5. Oktober 2012 um 16:34 Uhr

1327130cookie-checkMehrere benutzerdefinierte Permalink-Strukturen in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy