используя get_template_part () внутри виджета и передающих переменные

Я читал, что get_template_part() должен использоваться только темами не плагинами, я не знаю, считается ли его использование внутри функции виджета (созданной темой) плагином или нет.

Во всяком случае, я пытаюсь передать переменные виджета ($ myvar) в шаблон ('loop.php' в моем случае), но он не извлекает его даже при использовании global $myvar; внутри шаблона.

Вот мой код функции виджета:

 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 "используя get_template_part () внутри виджета и передающих переменные"

Действительно, get_template_part предназначен для использования только в темах, хотя это будет включать виджеты внутри вашей темы. Глядя на исходный код функции, вы увидите, что основная причина этого заключается в том, что get_template_part делает некоторые дополнительные связанные с темой темы, прежде чем он locate_template не по умолчанию.

Тем не менее, у вас не должно возникнуть проблемы с вызовом его из виджета, поэтому проблема скорее всего в том, что ваш loop.php не находится там, где его ищет.

См. Этот ответ для передачи переменной в шаблон.

Вы можете использовать set_query_var('myvarname', $myvarvalue); перед get_template_part() . Затем в шаблоне цикла вы можете получить доступ к var с помощью $myvarname .

Вы также можете пропустить все это и использовать шаблон локации .