Ich arbeite gerade dieses Tutorial an benutzerdefinierten Beitragstypen (in einem Plugin) durch, in dem der Autor demonstriert, wie die Verwendung einer dedizierten Vorlage für den benutzerdefinierten Beitragstyp erzwungen wird . Der Autor stellt so fest:
Der Code (unten) sucht nach der Vorlage
single-movie-reviews.php
im aktuellen Themenverzeichnis. Wenn es nicht gefunden wird, sucht es im Plugin-Verzeichnis nach der Vorlage, die wir als Teil des Plugins bereitstellen. Der Hook template_include wurde verwendet, um das Standardverhalten zu ändern und eine bestimmte Vorlage zu erzwingen.
Schritt 1: Fügte diesen Code meiner plugin-name.php
Datei hinzu
add_filter( 'template_include', 'include_reviews_template', 1 );
function include_reviews_template(){
if ( get_post_type() == 'reviews' ) {
if ( is_single() ) {
// checks if the file exists in the theme first,
// otherwise serve the file from the plugin
if ( $theme_file = locate_template( array( 'single-movie-reviews.php' ) ) ) {
$template_path = $theme_file;
} else {
$template_path = plugin_dir_path( __FILE__ ) . '/templates/single-movie-reviews.php';
}
}
}
return $template_path;
}
Schritt 2: Erstellen Sie die Datei single- {custom-post-type} .php.
Als Nächstes erstellte ich die erforderliche single-movie-reviews.php
-Datei und fügte sie dem '/my-plugin/templates/'
-Verzeichnis hinzu.
Der Autor fügt Folgendes hinzu:
Hinweis: Sie müssen eine neue Seite über das Dashboard erstellen unter Verwendung der neu erstellten Vorlage.
Die Probleme
Also, was mache ich falsch?
Bitte beraten
Ändern Sie diese Zeile:
function include_reviews_template(){
Dazu:
function include_reviews_template( $template_path ) {
Wenn get_post_type() == 'reviews'
false ist, geben Sie eine nicht festgelegte Variable ($template_path
) zurück. Diese Änderung sollte den von WordPress an die Funktion übergebenen Wert senden.