Wie setze ich eine Fallback-Vorlage für einen benutzerdefinierten Post-Typ in einem Plugin?

Mein benutzerdefiniertes Plugin erstellt einen benutzerdefinierten Post-Typ und ich möchte meine eigene "single-my_custom_cpt.php" -Datei gestalten. Ich möchte es jedoch in meinem Plugin-Ordner speichern und zulassen, dass es im aktiven Themenordner der Website überschrieben wird.

Zum Beispiel existiert single-my_custom_cpt.php im Ordner /plugins/my-plugin/ , und jemand erstellt /themes/site-theme/single-my_custom_cpt.php . Ich möchte, dass die Theme-Datei zuerst angezeigt wird. Wenn sie gelöscht wird, wird die Plugin-Datei angezeigt.

Solutions Collecting From Web of "Wie setze ich eine Fallback-Vorlage für einen benutzerdefinierten Post-Typ in einem Plugin?"

So stellen Sie eine Standardvorlage bereit, die von einem Themen-Hook in template_include überschrieben werden kann, wie in den verknüpften Fragen vorgeschlagen. Sie erhalten die Vorlage, die WordPress als Parameter verwenden möchte. Wenn das nicht die gewünschte Datei ist, ersetzen Sie sie durch die Datei Ihres Plugins:

 add_filter( 'template_include', 'wpse_57232_render_cpt', 100 ); /** * Provide fall back template file for a custom post type single view. * * @return void */ function wpse_57232_render_cpt( $template ) { // Our custom post type. $post_type = 'my_custom_cpt'; // WordPress has already found the correct template in the theme. if ( FALSE !== strpos( $template, "/single-$post_type.php" ) ) { // return the template in theme return $template; } // Send our plugin file. if ( is_singular() && $post_type === get_post_type( $GLOBALS['post'] ) ) { // return plugin file return dirname( __FILE__ ) . "/single-$post_type.php"; } // Not our post type single view. return $template; }