Ich habe einen benutzerdefinierten Beitragstyp "Nachrichten" auf meiner Wordpress-Site. Ich verwende das Plugin "Erweiterte benutzerdefinierte Felder", 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, dies zum Laufen zu bringen, indem ich:
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 <= CURDATE() 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 in der Lage sein, mit http://example.com/news/2012/
und auf bestimmte Jahre und Monate zu verlinken http://example.com/news/2012/10/
.
Ich habe versucht, das Plugin Custom Post Type Archives zu verwenden, aber wenn /news/2012/
ich dazu komme, erhalte ich die Standardnachrichtenliste ohne Filter.
Hier ist meine benutzerdefinierte Postleitzahl
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
)
);
Posts
Post-Typ bereits für etwas anderes? Dies ist wirklich das, wofür Posts eingerichtet sind - monatliche / jährliche Archive, und "funktionieren" einfach, ohne dass Sie etwas weiter tun müssen. Wenn Sie dasselbe Verhalten für einen benutzerdefinierten Beitragstyp wünschen, müssen Sie leider Ihre eigenen Umschreiberegeln generieren, was nicht so einfach ist.year
und verwenden müsstemonth
?Antworten:
Hier ist ein Beispiel
add_rewrite_rule
für die Behandlung von Jahren und Monaten für einen benutzerdefinierten Beitragstyp, bei demnews
es sich um die Schnecke handelt. Besuchen Sie dieSettings > Permalinks
Seite in admin, um die Umschreiberegeln zu löschen, nachdem diese hinzugefügt wurden. Sie können dies auch in ein Plugin einfügen und die Regeln für die Aktivierung des Plugins neu schreiben .quelle
http://mysite.com/news/2012/
ich zu weitergeleitethttp://mysite.com/news/
. Ich kann nicht herausfinden, wo das Problem liegt. Ich sollte wahrscheinlich erwähnen, dass ich auch das Roots WP-Framework verwende. Ich habe mich umgesehen, kann aber nichts finden, was dies verursachen würde.http://mysite.com/index.php?post_type=news&year=2012&monthnum=10
roots_nice_search_redirect
Funktion in WP Roots zu tun hat . Ich werde diese Funktion ändern und das Ergebnis hier veröffentlichen. Danke Milo, deine Zugangsregeln waren korrekt.