Theme-unabhängiges Plugin durch Verwendung der Standard-Seitenvorlage

Ich versuche ein Plugin zu erstellen, das in jedem Thema verwendet werden kann. Es verwendet einen benutzerdefinierten Post-Typ und ich benutzte den Aktions-Hook, um den Inhalt zu ändern, so dass ich zusätzliche Meta-Felder und ähnliches verwenden konnte. Auch hier erklärt: Wie mache ich mein Plugin themenunabhängig? .

Problem:
Es funktioniert, aber das Problem ist, es verwendet die Standard- Post- Vorlage aus dem aktiven Thema. Sie haben oft eine Menge Metastücke und ich will das nicht. Das Erstellen einer benutzerdefinierten Vorlage im Plugin-Ordner würde nicht helfen, da jedes Thema anders ist.

Mögliche Lösung:
Verwenden der Standardseitenvorlage des Designs Aber wie kann ich das erreichen?

Solutions Collecting From Web of "Theme-unabhängiges Plugin durch Verwendung der Standard-Seitenvorlage"

Die Verwendung der Standardseitenvorlage weist dieselben Probleme auf wie die Verwendung der Einzelpostvorlage. Es ist wahr, dass Seiten tempentes normalerweise keine Informationen wie Autor, Datum usw. veröffentlicht hat, aber es ist völlig Sache des Entwicklers. Auch dort gibt es Themen ohne Seitenvorlagen .

Wenn Sie jedoch die Verwendung der Standard-Seitenvorlage für Ihren benutzerdefinierten Beitrag erzwingen möchten, können Sie dies tun (natürlich nur, wenn page.php im aktiven Design vorhanden ist):

add_filter( 'template_include', 'cyb_set_template' ); function cyb_set_template( $template ) { if ( is_singular( 'yourcpt' ) ) { $page_template = locate_template( array( 'page.php' ) ); if ( '' != $page_template ) { return $page_template; } } return $template; } 

Beachten Sie, dass dies die WordPress-Vorlagenhierarchie unterbricht. Kein Thema könnte single-yourcpt.php verwenden, um benutzerdefinierte Vorlagen für Ihren benutzerdefinierten Beitragstyp zu erstellen. Die einzige Vorlage, die für ein Theme erforderlich ist, ist index.php und es können nur Theme mit der Template-Datei index.php vorhanden sein.

Das nächste Snippet könnte das Problem lösen, indem zuerst nach single-yourcpt.php-Datei, theme page.php, single.php und schließlich index.php (Code nicht getestet) gesucht wird:

 add_filter( 'template_include', 'cyb_set_template' ); function cyb_set_template( $template ) { if ( is_singular( 'yourcpt' ) ) { // Try to locate single-youprcpt.php first, // then page.ph $page_template = locate_template( array( 'single-yourcpt.php', 'page.php', 'single.php', 'index.php' ) ); if ( '' != $page_template ) { return $page_template; } } return $template; }