Что лучше всего передать переменные в шаблоны тем и использовать их в разных местах, например, в виде виджетов?

У меня есть файл шаблона на /parts/template.php, который содержит код для публикации, например,

echo get_the_title(); //same lines with my_render_function 

и я использую его в файле archive.php с этими строками.

 while ( have_posts() ) : the_post(); get_template_part('template'); endwhile; 

Но теперь я написал виджет и короткий код . Мой виджет и короткий код с помощью функции shared_listing ()

 function shared_listing(){ $posts=get_posts(); my_render_function($posts); } function my_render_function($posts){ foreach($posts as $post) { echo get_the_title($post->ID); //same lines with template.php except $post->ID } } 

поэтому я нашел решение. я удалил template.php и изменил archive.php на это.

 if ( have_posts() ) : my_render_function($posts); endif; 

Теперь мой архив.php, мой виджет и мой shortcode использует тот же шаблон с my_render_function (). И я создал файл с именем my_render_function.php и после добавления функциональных строк я скопировал его в папку с частями.

И я не использовал эти строки в виджетах и ​​шорткоде и менял шаблон на функцию рендеринга, потому что мне нужно передавать $ posts и некоторые другие переменные. Из-за дизайна $ post_count является одним из них. И без использования цикла в точке, в которой используются интерфейсные коды, это не имеет никакого смысла. и мне нужно сделать все правильно. Не с хаками.

 setup_postdata( $post ); get_template_part('template'); 

Итак, теперь мой вопрос;

в начале я использовал get_the_title (); в template.php и get_the_title ($ post-> ID); в цикле виджетов и коротких кодов. но теперь я использую get_the_title ($ post-> ID) у всех из них.

1- это делает мою систему более медленной?

В wp существует механизм кэширования объектов, поэтому он не должен влиять, я полагаю.

в начале я использовал get_template_part () в файле archive.php с функцией has_posts () и foreach render в shortcode и widget. теперь im использует include () (только один раз в функции.php) и foreach функцию рендеринга на всех из них.

2- это лучший способ сделать это правильно? или есть ли какое-нибудь другое логическое и высокопроизводительное решение для этого?

извините за мой бедный английский и благодарю вас за чтение.

1 Если вы посмотрите на исходный код get_the_title вы увидите, что нет разницы между двумя способами написания одной и той же вещи, потому что, если вы вызываете ее без параметра, она должна быть текущим идентификатором.

2 Между двумя используемыми вами петлями нет существенной разницы. Все проходят через такое же количество предметов и делают с ним то же самое. Теоретически помещение всего в archive.php было бы немного быстрее, потому что вы пропускаете вызов функции get_template_part() .

Короче говоря: когда дело доходит до производительности, два варианта вряд ли отличаются друг от друга.