Ich erstelle eine Wordpress-Site mit mehreren benutzerdefinierten Beitragstypen. Jeder Beitragstyp ist ein anderes Magazin. Ich habe auch benutzerdefinierte Metafelder für ein Magazinjahr und eine Ausgabe.
Ich hätte gerne URLs (verwendet archive.php):
http://my_site/magazine/name/
http://my_site/magazine_name/year/
http://my_site/magazine_name/year/issue/
Ich habe es per Code gemacht:
function magazine_rewrite_tag() {
add_rewrite_tag('%issue_year%', '([0-9]{4})');
add_rewrite_tag('%issue%', '([0-9])');
}
add_action('init', 'magazine_rewrite_tag', 10, 0);
und:
function magazine_rewrite_rules() {
add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top');
add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top');
}
add_action('init', 'magazine_rewrite_rules');
Natürlich habe ich auch benutzerdefinierte Abfragen in archive.php. Und es funktioniert gut.
Aber jetzt funktionieren meine URLs für einzelne Artikel nicht. Standardmäßig ist es:
http://my_site/magazine/post-title
Aber es zeigt alle Artikel aus dem Magazin wie URL (und es verwendet die Vorlage archive.php):
http://my_site/magazine/
Wie füge ich Regeln für das erneute Schreiben einzelner benutzerdefinierter Beiträge ordnungsgemäß hinzu? Es ist möglich, dass ich URLs für einzelne Posts (nur für ausgewählte benutzerdefinierte Post-Typen) in diesem Format haben möchte:
http://my_site/magazine/year/issue/post-title
quelle
10
ist die Standard - Priorität . In diesem Fall können Sie beide weglassen… oder eine höhere Zahl ausprobieren. (2) Haben Sie die resultierenden Umschreiberegeln überprüft? Stellen Sie außerdem sicher, dass Sie die Reihenfolge dieser Regeln überprüfen, während sie in ihrer Reihenfolge verarbeitet werden. Dump$GLOBALS['wp_rewrite']
. (3) Haben Sie hinzugefügt,query_vars
dass Konflikte auftreten könnten?Antworten:
Ich habe eine Lösung gefunden! Ein Monkeyman Rewrite Analyzur-Plugin war sehr hilfreich: https://wordpress.org/plugins/monkeyman-rewrite-analyzer/
Also jetzt habe ich solche funktionierenden URLs ...
single.php:
archive.php:
Auf einer benutzerdefinierten Post-Editor-Seite in wp-admin verwende ich das Plugin "Erweiterte benutzerdefinierte Felder" für das Ausgabejahr und die Ausgabe. Sie können Metafelder auch selbst definieren.
Als nächstes habe ich Rewrite-Tags für das Ausgabejahr und die Ausgabe hinzugefügt:
Als Nächstes habe ich Umschreibregeln für eine beliebige Kombination von URLs hinzugefügt:
Am Ende ersetze ich meine eigenen Standard-URLs durch Ausgabejahr und Ausgabe
quelle