it-swarm.com.de

Verwenden Sie single.php aus dem Plugin-Ordner anstelle des Standard-Vorlagenordners

Ich versuche herauszufinden, wie ich eine andere single.php für ein benutzerdefiniertes Plugin verwende. Es ist für einen benutzerdefinierten Beitragstyp.

Denn wenn Leute dieses Plugin installieren, werden sie die benutzerdefinierte single-product.php nicht in ihrem Theme-Ordner haben. Deshalb möchte ich, dass es im Plugin-Ordner liegt.

Gibt es eine Möglichkeit, den Pfad der single.php-Datei dieses benutzerdefinierten Beitragstyps zu ändern oder die Datei nach der Installation dieses Plugins automatisch im Themenordner zu generieren?

Danke im Voraus

2
user3428971

Ich denke, ein Hook in template_include wie hier beschrieben könnte ein geeigneter Weg sein, dies zu tun.

Code könnte so aussehen:

add_filter('template_include', 'my_plugin_templates');
function my_plugin_templates( $template ) {
    $post_types = array('post');

    if (is_singular($post_types)) {
        $template = 'path/to/singular/template/in/plugin/folder.php';
    }

    return $template;
}
4
flomei

Plugins sollten niemals einen visuellen Effekt haben, der kein Widget oder Shortcode ist. Wenn Sie das Gefühl haben, die Designdateien manipulieren zu müssen, tun Sie dies höchstwahrscheinlich falsch.

* Es gibt immer Ausnahmen, wenn Sie auf ein bestimmtes Thema abzielen oder etwas tun, das so themenunabhängig ist (wie Popup/Lightbox), dass es sehr unwahrscheinlich ist, das Thema zu brechen oder ein hässliches Ergebnis zu erzielen.

BEARBEITEN von KOMMENTARE

Hierbei handelt es sich um ein Grenzproblem ohne weiß/schwarze Antwort. Nach dem, was du beschreibst, hättest du ein Thema und kein Plugin erstellen sollen, aber ich verstehe, dass dir der Auftrag erteilt wurde. Der richtige Weg ist wie beim Woocommerce - Shortcodes und Widgets, die den als CPT verwalteten Inhalt anzeigen. Andernfalls spielen Sie mit größerer Wahrscheinlichkeit nicht mit allen Themen in Nizza

1
Mark Kaplun

Wobei get_custom_post_type_template die Funktion ist, die WordPress aufrufen soll, wenn der Inhalt abgerufen wird. Beachten Sie, dass die vom Plugin definierte Filterfunktion den vollständigen Pfad zu einer Vorlagendatei zurückgeben muss, da sonst die resultierende Seite leer bleibt. Die Vorlagendatei sollte die gleichen Einträge enthalten wie die single.php-Datei im Design. Für weitere Informationen besuchen Sie die Website.

 <?php
    function get_custom_post_type_template($single_template) {
    global $post;

       if ($post->post_type == 'my_post_type') {
          $single_template = dirname( __FILE__ ) . '/post-type-template.php';
       }
    return $single_template;
    }
    add_filter( 'single_template', 'get_custom_post_type_template' );
?>
0
kamleshpal