it-swarm.com.de

Benutzerdefinierter Beitragstyp entspricht dem Seitennamen, der einen Konflikt verursacht

Ich habe einen benutzerdefinierten Beitragstyp eingerichtet. Ich möchte, dass der Slug mit einem Seitennamen identisch ist, da alle diese CPTs auf dieser bestimmten Seite (/ Teammitgliedern) abgefragt werden.

Wenn ich den Slug "Benutzerdefinierter Beitragstyp" auf die Seiten-URL setze, lädt diese bestimmte Seite die Seitenvorlage nicht mehr. Es wird eine kaputte Beitragsvorlage geladen.

Mein benutzerdefinierter Beitragstyp umschreiben:

$rewrite = array(
    'slug'                  => 'team-members',
    'with_front'            => false,
    'pages'                 => false,
    'feeds'                 => false,
);

Dadurch kann ich die richtige URL von: http://www.example.org/team-members/bob-jones generieren.

Das Problem ist jetzt, wenn ich versuche, auf die Seite zuzugreifen: http://www.example.org/team-members/ , wird nicht die richtige Seitenvorlagendatei gerendert (mit dem passenden Titel page-team-members.php). Das Speichern der Permalink-Einstellungen hat nicht funktioniert.

Wie kann ich den URL-Block meines benutzerdefinierten Beitragstyps erstellen, um eine Seite mit dem gleichen Titel nicht zu beeinträchtigen?

2
Joe

Was unter http://www.example.org/team-members/ angezeigt wird, ist das 'Beitragstyp-Archiv' für Ihren Beitragstyp. Dies ist die automatisch generierte Liste der von WordPress erstellten Beiträge. Wenn Sie nicht möchten, dass der Beitragstyp ein Archiv enthält, können Sie das Archiv deaktivieren, indem Sie das Argument has_archive auf false setzen:

register_post_type( 'post_type_name', array(
    'has_archive' => false,
) );

Jetzt können Sie konfliktfrei eine Seite bei/team-Mitgliedern erstellen.

2
Jacob Peattie

Ich habe über die Jahre herausgefunden, dass der einfachste Weg, diese Art von Konflikt zu vermeiden, darin besteht, die CPT-Posts von der Seite zu trennen, indem Sie einen zusätzlichen Schritt in die URL einfügen.

Ändern Sie beispielsweise 'slug' => 'team-members', in 'slug' => 'team-members/member',, damit Ihre URL zu http://www.example.org/team-members/member/bob-jones wird.

Sicher, es ist nicht ideal und ich würde die URL lieber sauberer finden, aber manchmal muss man Kompromisse eingehen, um ein einfaches Leben zu führen :-)

1
Peter HvD