it-swarm.com.de

Warum meine benutzerdefinierten Postings nicht angezeigt werden (404 Fehler/Seite nicht gefunden)

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:

  • Ein neues Kinderthema hinzugefügt (von Twenty Twelve)
  • Ich habe das neue Kinderthema angewendet
  • Ich habe einen neuen benutzerdefinierten Beitrag erstellt, indem ich die Datei 'functions.php' im untergeordneten Thema aktualisiert und diesen Code hier einfügte ( http://Pastebin.com/DKny8QH1 ).
  • In WP admin habe ich 2 neue Posts unter Nachrichten erstellt (neuer benutzerdefinierter Post oben erstellt)
  • wenn ich versuche, auf den Beitrag zuzugreifen, erhalte ich 404 (wie im obigen Screenshot gezeigt). Ich kann jedoch auf die normal erstellten Beiträge zugreifen.

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.

  • Ich ging zu Einstellungen> Permalink
1
Abs

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

2
Abs

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:

  • Registrieren Sie Ihren CPT wie gewohnt bei init.
  • Wenn Sie Themen ändern, wird ein gespeicherter Wert gelöscht, der besagt, dass Ihr Thema aktiv ist
  • Wenn Ihr Thema aktiv wird und dieser gespeicherte Wert nicht festgelegt ist, wird Ihr CPT-Registrierungscode (erneut) vom Thema ausgelöst und die Umschreiberegeln werden sofort gelöscht. Anschließend wird der gespeicherte Wert so festgelegt, dass flush_rewrite_rules() nicht mehrmals ausgelöst wird.
2
EAMann