Gibt es einen Haken für die Aktivierung des Themas? oder etwas ähnliches?

Ich weiß, dass das schon einmal gefragt wurde, aber meine Frage ist anders.

Damit. Ich habe ein Plugin, das benutzerdefinierte Post-Typen im laufenden Betrieb erstellt. Das Plugin hat auch eine function zum Erstellen von Vorlagendateien für jeden dieser benutzerdefinierten Post-Typen.

Es geht einfach zu diesem Themenordner und erstellt eine Vorlagenseite für jedes aktuelle Thema. Dies funktioniert perfekt für die aktuellen Themen. Was ist aber passiert, wenn der Administrator ein anderes Thema hinzugefügt und aktiviert hat?

Also suche ich nach einer Möglichkeit, die Aktivierung zu erkennen und führe dann die function aus, um die Template-Seite für dieses Thema zu erstellen.

Meine erste Idee war, Thema Aktivierung Haken zu überprüfen, die ich denke, nicht zur Arbeit gehen.

Jeder mit einer anderen Idee?

Solutions Collecting From Web of "Gibt es einen Haken für die Aktivierung des Themas? oder etwas ähnliches?"

Speichern Sie die Vorlage nicht im aktuellen Design.

Speichern Sie stattdessen die Vorlage in Ihrem Plugin selbst und versuchen Sie, die Vorlage mithilfe des template_include Filters für eine bestimmte Seite oder was auch immer mit is_page .

Dadurch müssen Sie sich keine Gedanken über Änderungen am Thema machen.

Ich würde vorschlagen, dass das Schreiben von Dateien in das Themenverzeichnis der falsche Weg ist, um das zu erreichen. Sie könnten möglicherweise mehrere doppelte Dateien erstellen, was zu Speicherplatzverschwendung führt, und es ist auch möglich, dass der Server so konfiguriert ist, dass das Schreiben auf der Festplatte nicht funktioniert.

Es gibt einen Filter namens template_include . Mit diesem Filter kann Ihr Plugin steuern, welche Vorlage geladen wird und kann eine Vorlage aus einem eigenen Verzeichnis laden. Etwas wie das:

 function load_plugin_template( $template ) { global $wp_query; if (is_single() && 'book_type' === $wp_query->post->post_type) { get_header(); include(plugin_dir_path( __FILE__ ).'some/file/path/file.php'); get_footer(); die; } return $template; } add_filter( 'template_include', 'load_plugin_template', 99 );