GET_TEMPLATE_PART()在循环中是如何工作的?

时间:2017-05-19 作者:He Wang

有人能给我解释一下这个函数在循环中是如何工作的吗?

我在wordpress循环中多次使用此函数,如下所示:

loop start

  get_template_part("template/part", "example");

loop end
这方面的神奇之处在于,我可以调用如下函数the_title() 模板没有任何问题part-example.php.

但如果我尝试将自定义变量传递给part-example.php 这样,它就会失败:

$var = "variable";
Start loop

  get_template_part("template/part", "example");

End loop
内部为exmaple。php文件

echo $var; // this will fail
我确实通过阅读great找到了解决这个问题的方法this article, 它正在使用include( locate_template() ).

但我只是想知道,post数据是如何通过get_template_part()?

提前谢谢。

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

post数据实际上并没有传递到模板部件。有一个全局变量称为$post 其中包含有关当前帖子的数据,例如帖子的ID。

使用调用模板部件时get_template_part(), WordPress将查看模板内部并运行其中的任何内容,并在循环中输出它。

例如,如果你使用the_title() 在模板部件中,WordPress将尝试运行the_title() 函数,这取决于帖子ID。但是,由于$post 变量在模板部件中可用,调用$post->ID 将会成功,并且the_title() 函数将成功打印出当前帖子的标题。

如果要将一些数据传递到模板部件,可以使用set_query_var(); 相反考虑这样一个循环:

if (have_posts()) {
    while(have_posts()) {
        the_post();
        set_query_var( \'sample\', \'sample_value\' );
        get_template_part("template/part", "example");
    }
}
这将把示例传递到模板文件,可以使用以下代码行检索模板文件:

extract( $wp_query->query_vars );

然后打印人:

var_dump( $sample);

我希望现在您对该功能的工作原理有了更深入的了解。

结束

相关推荐