Benutzerdefinierte Post-Typ-Jahres- / Monatsarchiv-Permalinks

Ich habe einen benutzerdefinierten Beitragstyp “Nachrichten” in meiner WordPress-Site. Ich verwende das Advanced Custom Fields-Plugin, um jedem Beitrag Metadaten hinzuzufügen.

Ich möchte eine Reihe von Nachrichten als Archiv erstellen:

[2013] [January] => 5 [2012] [January] => 20 [February] => 10 [2011] [April] => 30 

Ich habe es geschafft, das zu funktionieren mit:

  global $wpdb; $news = $wpdb->get_results( "SELECT wp_posts.post_date, COUNT(wp_posts.ID) as count FROM $wpdb->posts WHERE wp_posts.post_type = 'news' AND wp_posts.post_status = 'publish' AND wp_posts.post_date = DATE_SUB(CURDATE(), INTERVAL 3 YEAR) GROUP BY YEAR(wp_posts.post_date), MONTH(wp_posts.post_date) ORDER BY wp_posts.post_date DESC", ARRAY_A); $archive = array(); foreach ($news as $post): $year = date('Y', strtotime($post['post_date'])); $month = date('m', strtotime($post['post_date'])); $month_name = date('F', strtotime($post['post_date'])); $post['url'] = 'NOT SURE ABOUT URL'; $archive[$year][$month_name] = $post; endforeach; 

Ich muss mit http://example.com/news/2012/ und http://example.com/news/2012/10/ auf bestimmte Jahre und Monate verlinken können.

Ich habe versucht, das Plugin Custom Post Type Archives verwenden, aber wenn ich /news/2012/ Ich bekomme die Standard-News-Liste ohne Filter angewendet.

Hier ist mein Custom Post Type Code

 register_post_type('news', array( 'label' => 'News', 'description' => 'Latest News', 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'capability_type' => 'post', 'hierarchical' => true, 'rewrite' => array('slug' => '','with_front' => '1'), 'query_var' => true, 'has_archive' => true, 'menu_position' => 120, 'menu_icon' => /assets/img/icon-custom.png ) ); 

Solutions Collecting From Web of "Benutzerdefinierte Post-Typ-Jahres- / Monatsarchiv-Permalinks"

Hier ist ein Beispiel mit add_rewrite_rule , um Jahre und Monate für einen benutzerdefinierten add_rewrite_rule zu behandeln, bei dem news der Slug sind. Rufen Sie die Seite Settings > Permalinks in admin auf, um die neu geschriebenen Regeln zu löschen, nachdem diese hinzugefügt wurden. Sie können dies auch in ein Plugin einfügen und die Umschreibregeln bei der Aktivierung des Plugins löschen .

 function wpa83797_news_rewrite_rules(){ add_rewrite_rule( 'news/([0-9]{4})/([0-9]{1,2})/?$', 'index.php?post_type=news&year=$matches[1]&monthnum=$matches[2]', 'top' ); add_rewrite_rule( 'news/([0-9]{4})/?$', 'index.php?post_type=news&year=$matches[1]', 'top' ); } add_action( 'init', 'wpa83797_news_rewrite_rules' );