Ich möchte meinen benutzerdefinierten Beitragstyp als Plug-in anbieten, damit Benutzer ihn verwenden können, ohne ihren Themenordner zu berühren. Im Themenordner befinden sich jedoch benutzerdefinierte Vorlagen für Posts (z. B. "single-movies.php"). Gibt es eine Möglichkeit, WP dazu zu bringen, im Ordner des Plugins nach einer single-movies.php zu suchen? Eine Funktion in die Filer-Hierarchie einbinden ? Oder get_template_directory (); ?
plugins
custom-post-types
themes
directory
nathanbweb
quelle
quelle
get_query_template()
Funktion aufgerufen . Es ist ein variabler Hook, daher{$type}_template
ändert sich der erste Teil abhängig davon, welcher Parameter an diese Funktion übergeben wird. Siehe wp-includes / template.php für einige gebräuchlicheadd_filter( 'single-movies_template', 'my_custom_template' );
. (Diese Frage ist für neue Antworten gesperrt, daher kann ich sie nicht einzeln hinzufügen.)PLUGIN_PATH
mitplugin_dir_path( __FILE__ )
und dann den ersten Schrägstrich aus dem Dateinamen entfernen. Der vollständige Pfad würde ungefähr so aussehen:return plugin_dir_path( __FILE__ ) . 'Custom_File.php';
Aktualisierte Antwort
Sauberere und kürzere Version.
Alte Antwort
@Brainternet-Antwort wurde eine Überprüfung für eine benutzerdefinierte posttypspezifische Vorlage im Themenordner hinzugefügt.
Jetzt können Sie den Plugin-Benutzern erlauben, die Vorlage von Ihrem Plugin in ihr Design zu kopieren, um sie zu überschreiben.
In diesem Beispiel müssen sich Vorlagen im Stammverzeichnis des Plugins und des Themas befinden.
quelle
locate_template
stattget_stylesheet_directory
klingt für mich wie die Cleaner-Option (hier zu finden: code.tutsplus.com/tutorials/… ).Ich möchte darauf hinweisen, dass es bei Verwendung der Filtermethode äußerst wichtig ist, den Filter wie folgt zu priorisieren:
Wenn Sie dies nicht tun, versucht WP manchmal, nach diesem Filter eine erneute Überprüfung durchzuführen. Zog mir aus diesem Grund etwa 2 Stunden lang die Haare aus.
quelle
Es gibt einen viel besseren Weg, dies für meine Plugins zu tun.
Verwenden Sie den
template_include
Filter-Hook, um den obigen Code zu laden.quelle
Dank dieser Seite konnte ich die gleiche Frage für mich lösen.
Als Referenz habe ich Folgendes gefunden:
Der Filter-Hook {$ type} _template hat bei mir nicht funktioniert
quelle
Oben ist eine gute Antwort, aber das Prüfen auf die Variable $ single ermöglicht es der Vorlage, eine Vorlage zu überschreiben, wenn eine vom Thema / untergeordneten Thema bereitgestellt wird.
quelle