Es ist einfach nicht möglich, datumsbasierte Archive per Post-Typ zu erstellen

Ich erwartete, dass wp3.1 mit der Unterstützung für Archiv- {post_type} .php meine Probleme lösen würde. Ich kämpfe jedoch immer noch darum, dass es funktioniert.

Was ich will ist: eine benutzerdefinierte datumsbasierte Archivseite pro Posttyp, die Jahre und Monate anzeigt. Wenn Sie auf ein Jahr im Monat klicken, gelangen Sie zu einer anderen Archivseite, auf der die relevanten Beiträge angezeigt werden.

Zunächst einmal: Ich habe keine Ahnung, wie ich eine datumsbasierte Archivseite für bestimmte Post-Typen erstellen soll. Gibt es eine bestimmte Seitenvorlage, die beim Aufruf von {post-type} / archive automatisch aufgerufen wird? scheint nicht post-type bewusst zu sein.

Zweitens funktionieren meine datumsbasierten Permalinks nicht. Eine einfache {post-type} / 2010/01 gibt einen Fehler404. Ich habe alle meine Archiv-.php-Seiten mit einfachem Inhalt erstellt:

 get_header(); ?> 

Irgendeine Ahnung?

Solutions Collecting From Web of "Es ist einfach nicht möglich, datumsbasierte Archive per Post-Typ zu erstellen"

Hast du 'has_archive => 'my_slug' zu deinen register_post_type() Argumenten 'has_archive => 'my_slug' ? Das sollte dir zumindest bei deinem zweiten Problem helfen.

Das Problem, das ich denke, ist, dass WordPress seine eingebauten Tags wie Datum und Postname nicht berührt, wenn Sie benutzerdefinierte Post-Typen verwenden. Versuchen Sie es mit diesem Code, den Sie hier finden :

 / Add filter to plugin init function add_filter('post_type_link', 'translate_permalink', 10, 3); // Adapted from get_permalink function in wp-includes/link-template.php function translate_permalink($permalink, $post_id, $leavename) { $post = get_post($post_id); $rewritecode = array( '%year%', '%monthnum%', '%day%', '%hour%', '%minute%', '%second%', $leavename? '' : '%postname%', '%post_id%', '%category%', '%author%', $leavename? '' : '%pagename%', ); if ( '' != $permalink && !in_array($post->post_status, array('draft', 'pending', 'auto-draft')) ) { $unixtime = strtotime($post->post_date); $category = ''; if ( strpos($permalink, '%category%') !== false ) { $cats = get_the_category($post->ID); if ( $cats ) { usort($cats, '_usort_terms_by_ID'); // order by ID $category = $cats[0]->slug; if ( $parent = $cats[0]->parent ) $category = get_category_parents($parent, false, '/', true) . $category; } // show default category in permalinks, without // having to assign it explicitly if ( empty($category) ) { $default_category = get_category( get_option( 'default_category' ) ); $category = is_wp_error( $default_category ) ? '' : $default_category->slug; } } $author = ''; if ( strpos($permalink, '%author%') !== false ) { $authordata = get_userdata($post->post_author); $author = $authordata->user_nicename; } $date = explode(" ",date('Y md H i s', $unixtime)); $rewritereplace = array( $date[0], $date[1], $date[2], $date[3], $date[4], $date[5], $post->post_name, $post->ID, $category, $author, $post->post_name, ); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } else { // if they're not using the fancy permalink option } return $permalink; } 

Dies ist ein Filter, der normalerweise in WordPress integriert ist und in WordPress aufgerufen wird, wenn er mit Posts arbeitet, aber nicht für benutzerdefinierte Post-Typen aufgerufen wird. Im Grunde behandelt es Tags, die mit Permalinks verwendet werden. Mit diesem Code sollten Sie Daten für Ihren CPT verwenden können.