Benutzerdefinierter Beitragstyp und Taxonomie Permalink Rewrite in WordPress 3.0.1

Lesezeit: 2 Minuten

Ich habe ein ‘Geschichte’ Benutzerdefinierter Beitragstyp und ‘Künstler’, Schriftsteller’ Taxonomien.

Ich muss einstellen Regeln umschreiben in der functions.php für die Dauerlinks so aussehen:

Künstler (Taxonomie/Kategorie):
http://www.example.com/isaac-deutscher
(/%Künstler%)

Schriftsteller (Taxonomie/Kategorie):
http://www.example.com/jean-paul-sartre
(/%Schriftsteller%)

Geschichte (Benutzerdefinierter Beitragstyp):
http://www.example.com/issac-deutscher/jean-paul-sartre/the-cat-is-under-the-table
(/%Künstler%/%Autor%/%Geschichte%)

Ich habe erfolglos einige Codes ausprobiert, die ich in Blogs gefunden habe, und kann nicht herausfinden, wie ich das lösen soll.

Ich arbeite in WordPress 3.0.1

Dies funktioniert für Story und Artist, aber nicht für Writer:

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;
}

Ich hoffe es hilft.

  • Hallo @maukoquiroga! Ich habe Ihren Code kopiert und ein wenig modifiziert, ich habe die cpt- und Taxonomie-Namen ersetzt und die Writer-Taxonomie vollständig entfernt. Kann es aber nicht zum Laufen bringen, bekomme nur 404. Denken Sie, Sie können mir helfen? Bitte sieh dir das mal an: pastebin.com/Q19amsZL

    –Richard B

    10. Januar 2013 um 10:46 Uhr


  • Ich zerbreche mir seit Wochen den Kopf und suche nach dieser Lösung. Dieser 12 Jahre alte Code funktioniert immer noch. Vielen Dank.

    – der König

    11. Oktober um 5:20 Uhr

1435460cookie-checkBenutzerdefinierter Beitragstyp und Taxonomie Permalink Rewrite in WordPress 3.0.1

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

Privacy policy