Ich habe einen benutzerdefinierten Beitragstyp erstellt:
register_post_type('sample_post_type',array(
'labels' => array(
'name' => _x('Sample Posts', 'post type general name'),
'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'show_in_nav_menus' => false,
'exclude_from_search' => true
));
Wie kann ich die Einzelbeitragsansicht für diesen bestimmten Beitragstyp deaktivieren? Das Anzeigen eines einfachen 404 ist in Ordnung oder das Weiterleiten auf die Homepage. Dies befindet sich in einem Plugin, daher kann ich keine single-sample_post_type.php-Datei erstellen, um eine leere Seite einzurichten.
quelle
get_current_user_id()
is_singular('post-type-slug')
imif()
zustand statt 2 zuständen verwenden?Setzen Sie einfach das Argument
wenn Sie register_post_type () aufrufen
quelle
Eine einfachere Möglichkeit, dies zu tun, besteht darin, die folgenden Argumente bei der Registrierung des benutzerdefinierten Beitragstyps zu übergeben
quelle
publically_querable
true sein, damit Post Type Archives funktionieren.Ein. Aus Ihrer Funktionsdatei.
Zwei. Aus deiner single.cpt.php Datei:
quelle
single-cpt_name.php
Datei haben, können Sie dies nicht tun. Wenn Sie die Funktion in eine einfache Plugin-Datei einfügen, können Sie sie aktivieren / deaktivieren, ohne eine Datei zu bearbeiten.Ausgehend von Svens wirklich guter Antwort habe ich seine Funktion umgeschrieben, um das Hinzufügen mehrerer Beitragstypen mithilfe
in_array()
der if-Anweisung und das Umleiten auf die Archivseite anstelle der Homepage zu vereinfachen .(Ich denke übrigens, dass die Einstellung
query_var
und / oderpublically_queryable
false nicht nur die einzelnen Ansichten, sondern auch die native Archivansicht'has_archive' => true
außer Kraft setzt. In diesem Fall können Sie weiterhin eine benutzerdefinierte WP_query einrichten und Ihre eigene Archivseite in erstellen eine Vorlage, aber die Hauptabfrage macht das nicht mehr, oder?)quelle
Getestet alle oben genannten und die eigentliche Lösung ist einfacher als alle vorgeschlagenen Weiterleitungen.
Damit auf das Archiv zugegriffen werden kann und die Elemente aufgelistet werden, muss ein einzelner Beitrag nicht verfügbar sein und die automatische Weiterleitung auf 404 erfolgen
bei der Registrierung Ihres CPT. Wenn Sie "
publicly_queryable
false" wählen, werden Ihre Archive nach "home" umgeleitet , andere Kombinationen funktionieren nicht. Setzen Sie dasquery_var
auf false und das ist es.Das vollständige CPT finden Sie unter https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a
Siehe Zeile 50 https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a#file-thz_cpt_items_single_view_redirect-php-L50
wie hier angegeben
https://codex.wordpress.org/Function_Reference/register_post_type
quelle
Wenn Sie die Einzelansicht für benutzerdefinierte Posts im Frontend vollständig deaktivieren möchten, aber die Archivseite anzeigen können, wird es etwas komplizierter.
Einstellung
publicly_queryable
zufalse
oder verhindern wird für sowohl Einzel- als auch Archivansicht angezeigt wird . In Funktionsargumenten ist kein Flag vorhanden , das verhindert, dass nur Umschreibregeln für einzelne Ansichten erstellt werden.rewrite
false
register_post_type
https://github.com/WordPress/WordPress/blob/5.2.3/wp-includes/class-wp-post-type.php#L540
Sie können jedoch das Umschreibungs-Tag entfernen, nachdem Sie Ihren Beitragstyp registriert haben. Dadurch bleiben die Umschreibungsregeln für die Archivansicht unverändert, es werden jedoch nur die Umschreibungsregeln für die Einzelansicht entfernt.
Ein weiterer Bonus ist, dass Sie von nun an einfache WordPress-Seiten mit der Permalink-Struktur (
event/simple-page
) erstellen können, die in komplexen Websites hilfreich sein kann.Denken Sie daran, die Umschreiberegeln nach der Code-Änderung zu löschen.
quelle