将变量传递给主题模板并在不同位置(如小部件)使用它们的最佳方式是什么?

时间:2016-05-23 作者:Ajna Sarut

我的模板文件位于/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;
但现在我写了一个widget 和ashortcode. 使用名为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、my widget和my shortcode使用与my\\u render\\u function()相同的模板。我创建了一个名为my\\u render\\u function的文件。在添加了函数行之后,我将其复制到parts文件夹中。

我并没有在widget和shortcode中使用这行代码,而是更改了模板来呈现函数,因为我还需要pass$posts和一些其他变量。因为design$post\\u count是其中之一。如果在前端代码输入点不使用循环,那么它就没有任何意义。我需要把它做好。当然不是黑客。

setup_postdata( $post );
get_template_part(\'template\');
现在我的问题是:;

一开始我用的是get_the_title(); at模板。php和get_the_title($post->ID); 在小部件和短代码循环中。但现在我在所有这些网站上都使用了get\\u标题($post->ID)。

1-这会使我的系统更慢吗

wp中有一个对象缓存机制,所以我相信它不会影响

一开始我用的是get_template_part() 存档时。php与have_posts() 和位于shortcode和widget的foreach渲染函数。现在我正在使用include() (仅在function.php中使用一次)和foreach render function 所有这些。

2-这是正确的最佳方式吗?或者是否有其他逻辑和高性能的解决方案可以做到这一点

对不起,我的英语很差,谢谢你的阅读。

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

1如果你看source code of get_the_title 您将看到,编写同一事物的两种方式之间没有区别,因为如果您在没有参数的情况下调用它,它应该是当前ID。

2您使用的两个循环之间没有实质性的区别。所有人都会处理相同数量的物品,并对其执行相同的操作。理论上把一切都放进去archive.php 会快一点,因为您跳过了对get_template_part().

简而言之:在性能方面,这两种选择几乎没有什么不同。

相关推荐

WordPress Custom Post Loop

我正在尝试循环浏览自定义WordPress帖子,遇到了一个问题,比如我添加了自定义字段并想在中显示它<li> 使用循环。我成功地完成了操作,但数据/链接/类别正在重复,如果类别与以下内容相同,我希望只显示一次:如果我有2篇带有data1类别的帖子,那么链接将只显示data1once 但我有2个不同类别的帖子,然后它会分别显示每个帖子。Sample Code:<ul class="filter filter-top"> <li cla