wake-up-neo.net

Wie verwende ich eine dedizierte Vorlage für den benutzerdefinierten Beitragstyp aus einem Plugin?

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

  1. Die Seitenvorlage wird NICHT im Dashboard angezeigt
  2. Wenn ich den Beitrag besuchte, den ich mit dem benutzerdefinierten Beitragstyp erstellt habe, zeigt erden Beitrag mit der Seitenvorlage aus dem Plugin an.jedoch... jede zweite Seite dh SeitenNICHTunter Verwendung des CPT zeigt jetzt einen leeren weißen Bildschirm (als ob die richtige Vorlage nicht gefunden werden könnte).

Also, was mache ich falsch?

Bitte beraten

3
sleeper

Ä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.

3