Verwendung von Vorlagen in einem Plugin

Ich erstelle ein Plugin. Dafür habe ich eigene Vorlagen geschrieben. Jetzt möchte ich die Tempeldateien in meinem Plugin-Verzeichnis haben.

Aber das funktioniert gut. Da ich das Plugin-Verzeichnis verwendet habe, weiß WordPress, dass meine Vorlagen Wp-Templates sind. Was ist der beste Weg, um WP wissen zu lassen, dass diese Dateien WordPress Templates sind?

Danke für die Antwort 🙂

Solutions Collecting From Web of "Verwendung von Vorlagen in einem Plugin"

Sie müssten dem page_template Hook einen Filter hinzufügen, der nach den von Ihnen benötigten Kriterien sucht.

Wenn Ihr Plugin zum Beispiel für einen benutzerdefinierten Post-Typ gedacht wäre, hätten Sie Folgendes:

 function myCustomTemplate( $page_template ) { // Check theme for template file $located = locate_template( 'single-{{postype}}' ); if ( ! empty( $located ) && is_singular( '{{posttype}}' ) ) { $page_template = dirname( __FILE__ ) . 'templates/my-custom-template.php'; } return $page_template; } add_filter( 'page_template', 'myCustomTemplate' ); 

Die $located Prüfung prüft, ob das aktuelle Thema des Benutzers bereits eine Datei enthält, um den benutzerdefinierten Beitragstyp anzuzeigen, da Sie dies wahrscheinlich nicht überschreiben möchten. Wenn dies nicht der Fall ist und der Post-Typ der benutzerdefinierte Post-Typ ist, der von Ihrem Plugin definiert wird, dann wird WordPress mitteilen, dass er das mit Ihrem Plugin verwenden soll.

Danke für deine Antwort. Es gibt mir eine weitere Idee, wo das Problem sein könnte. Aber irgendwie funktioniert es gut.

Ich werde meinen Code posten, vielleicht haben Sie eine Idee, wo das Problem liegt.

 add_action('template_redirect','check_access'); add_filter('page_template', 'plug_in_load_template'); function check_access() { if ($_SESSION['login'] != 'ok') { wp_redirect(content_url('plugins/Login_Plugin/templates/index.php')); exit(); } } function plug_in_load_template() { $located = locate_template('single-{{postype}}'); if (! empty($located) && is_singular('{{posttype}}')) { $page_template = plugin_dir_path( __FILE__ ) . 'Login_Plugin/templates/index.php'; } return $page_template; }