Ich habe gerade eine neue wp-Installation installiert. Ich habe ein neues untergeordnetes Thema erstellt, das auf dem Thema TwentyTwelve basiert. In der child theme functions.php habe ich einen neuen benutzerdefinierten Beitrag namens "news" erstellt. Ich habe zwei Beiträge zu den "Nachrichten" hinzugefügt. Wenn ich einen der beiden Artikel anzeige, wird der Fehler "Seite nicht gefunden" angezeigt. Siehe Screenshot: http://pasteboard.co/dtIOK6g.jpg
Ich erwarte, dass die Beiträge angezeigt werden, erhalte aber eine 404-Seite. Warum.
Update(um meine Frage zu klären): Nach der Installation habe ich sehr wenig Arbeit geleistet, abgesehen von den folgenden:
Vielen Dank
GELÖST: Das ist wirklich komisch, aber ich habe es gelöst. Offenbar musste ich die Option "Post name" für meine Permalinks-Einstellungen erneut auswählen, obwohl sie bereits ausgewählt war. Die erneute Auswahl dieser Option löste mein Problem. Entschuldigen Sie die Verwirrung.
BEHOBEN: Das ist wirklich komisch, aber ich habe es gelöst. Offenbar musste ich die Option "Post name" für meine Permalinks-Einstellungen erneut auswählen, obwohl sie bereits ausgewählt war. Die erneute Auswahl dieser Option löste mein Problem. Entschuldigen Sie die Verwirrung.
Ich ging zu Einstellungen> Permalink
Eigentlich ist das ein häufiges Problem.
Wenn Sie einen benutzerdefinierten Beitragstyp hinzufügen, registrieren Sie auch eine neue Umschreiberegel bei WordPress. Allerdings müssen Sie Ihre Umschreiberegeln nach der Registrierung löschen, damit WordPress sie erkennt.
Mit einem Plugin wird dies behoben, indem Sie Ihre CPT-Registrierung sowohl an init
(also verwendbar) als auch an den Aktivierungs-Hook des Plugins binden. Dann rufen Sie innerhalb des Plugin-Aktivierungs-Hooks manuell flush_rewrite_rules()
auf, um die Dinge zurückzusetzen.
Da es kein analoges Setup für die Aktivierung/Deaktivierung von Designs gibt, können Sie mithilfe von Optionen festlegen, wann das Design geladen wurde. Zum Beispiel:
function my_theme_register_cpt() {
$args = array(
// ... your initialization stuff
);
register_post_type( 'news', $news );
}
add_action( 'init', 'my_theme_register_cpt' );
function my_theme_deactivate() {
delete_option( 'my_theme_active' );
}
add_action( 'switch_theme', 'my_theme_deactivation' );
$is_active = get_option( 'my_theme_active' );
if ( 'set' !== $check ) {
my_theme_register_cpt();
flush_rewrite_rules();
add_option( 'my_theme_active', 'set', '', 'no' );
}
In einer Nussschale. Dieser Code wird:
init
.flush_rewrite_rules()
nicht mehrmals ausgelöst wird.