Verwenden von get_template_part () in einem Widget und Übergabe von Variablen

Ich lese, dass get_template_part() nur von Themes, nicht von Plugins verwendet werden sollte. Ich weiß nicht, ob es in einer Widget-function (erstellt vom Theme) als Plugin verwendet wird oder nicht.

Wie auch immer, ich versuche, diese Widget-Variablen ($ myvar) an die Vorlage (in meinem Fall ‘loop.php’) zu übergeben, aber es holt es nicht einmal mit global $myvar; in der Vorlage.

Hier ist mein Widget functionscode:

 function widget($args, $instance) { extract( $args ); $title = apply_filters('widget_title', $instance['title']); echo $before_widget; if ($title) { echo $before_title.$title.$after_title; } $myvar = 'start'; get_template_part('loop'); ?> echo $after_widget; } 

Solutions Collecting From Web of "Verwenden von get_template_part () in einem Widget und Übergabe von Variablen"

get_template_part ist in der Tat get_template_part für die Verwendung in Themes gedacht, obwohl dies Widgets in Ihrem Theme beinhalten würde. Betrachtet man den Quellcode der function, sieht man, dass der Hauptgrund dafür ist, dass get_template_part einige zusätzliche themenbezogene locate_template vor dem locate_template auf nicht-standardmäßige Weise locate_template .

Das heißt, Sie sollten kein Problem damit haben, es von einem Widget aus aufzurufen. Das Problem ist also, dass Ihre loop.php nicht an der Stelle ist, an der WP nach ihr sucht.

Beziehen Sie sich auf diese Antwort, um eine Variable an eine Vorlage zu übergeben.

Sie können set_query_var('myvarname', $myvarvalue); vor get_template_part() . Dann können Sie in Ihrer Loop-Vorlage mit $myvarname .

Sie können dies auch überspringen und stattdessen die locate-Vorlage verwenden.