Ich habe mit dem Erstellen eines benutzerdefinierten Beitragstyps als Plugin experimentiert (da ich dies an verschiedenen Stellen empfohlen habe).
Aber ich habe eine Frage nicht nach dem Wie , sondern nach dem Warum , CPTs als Plugin zu erstellen.
Ja ... Das Hinzufügen des CPT als Plugin hält meine functions.php schön und ordentlich.
Aber...
- Angenommen, ich habe aktiviert, muss
has_archive
ich noch erstellenarchive-cpt.php
, oder? - Außerdem: Um das CPT anzuzeigen, muss ich eine benutzerdefinierte Schleife erstellen, also muss ich noch
single-cpt.php
... richtig? - Und diese Dateien müssen im Thema erstellt werden , oder?
Wenn ich das richtig verstehe,
- Wenn ich das Plugin deaktiviere: Ich muss die und Seiten noch entfernen (oder verstecken oder so) .
archive-cpt.php
single-cpt.php
- Wenn ich das Thema wechsle : Ich muss diese beiden Seiten noch zum neuen Thema hinzufügen. Recht?
Ich habe noch nicht einmal das Problem des Hinzufügens eines CPT zur Standardschleife angesprochen (und seine Auswirkungen auf Plugin-basierte Cpt's).
Warum also ein CPT- Plugin?
custom-post-types
plugin-development
Schläfer
quelle
quelle
Antworten:
Die Antwort von toscho ist in Bezug auf die technischen Gründe für die Definition Ihres CPT in einem Plugin richtig, aber es scheint mir, dass ein Großteil Ihrer Fragen auf einem Missverständnis der Vorlagenhierarchie beruht. Fast, aber nicht ganz, jede Vorlagendatei, die Sie gesehen haben, ist optional.
WordPress verwendet die speziellen Dateien, falls vorhanden, greift jedoch auf eine andere Datei zurück
index.php
- letztendlich - wenn keine speziellen Dateien vorhanden sind. Ihr Thema muss nichts Besonderes implementieren, um die CPTs Ihres Plugins zu verarbeiten oder zu kompensieren. Das Thema kann aber nicht muss .Nr
archive.php
wird verwendet , und wenn das nicht funktioniert , dannindex.php
Wieder nein. Gleicher Grund.
single.php
wird verwendet und wenn nichtindex.php
.Ja, aber sie sind optional. Du brauchst sie überhaupt nicht.
Nein, Sie müssen nichts tun. Die Vorlagen werden nicht verwendet.
Falsch. Die Vorlagen sind optional. Sie benötigen sie nur, wenn Sie eine benutzerdefinierte Anzeige für den Beitragstyp wünschen.
Wenn Sie verstehen, dass das Thema und das CPT nicht so eng miteinander verbunden sind, wie es Ihre Frage vermuten lässt, sollte ein Teil der anderen Logik etwas sinnvoller sein.
quelle
Das Thema wird nicht geladen, wenn die Konstante
SHORTINIT
aufTRUE
(benutzerdefinierte AJAX-Handler, Importeure oder APIs) festgelegt ist. Dann können einem solchen benutzerdefinierten Beitragstyp oder einer solchen benutzerdefinierten Taxonomie keine Beiträge hinzugefügt werden.Die Vorlagen sind die Ansichten für den benutzerdefinierten Inhalt. Sie sollten die Logik nicht definieren oder sich darauf verlassen.
Außerdem kann der Benutzer nach einem Themenwechsel nicht mehr auf den Inhalt des Beitragstyps zugreifen und diesen ändern, da es ohne die Registrierung keine Schnittstelle geben würde.
Nach dem Deaktivieren eines Plugins müssen Sie das Thema nicht mehr ändern. Die Vorlagen werden einfach nicht mehr verwendet.
Update: Ein weiterer Vorteil von Plugins ist die Möglichkeit, sie netzwerkweit zu aktivieren . Ich bin der Hauptentwickler für Multilingual Press und wir bieten unseren Benutzern eine Funktion zum Übersetzen und Verbinden von benutzerdefinierten Posts. Dies kann jedoch nicht funktionieren, wenn sie an ein Thema gebunden sind, da ein Thema immer pro Site aktiv ist und nicht im gesamten Netzwerk. Themenposttypen sind wirklich schwer zu übersetzen.
Siehe auch: Wo soll ich meinen Code ablegen: plugin oder functions.php?
quelle