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.