多年來,希望將數(shù)據(jù)傳遞到模板文件的主題開發(fā)人員不得不使用不太理想的解決方法。這包括使用全局變量、?set_query_var()、include( locate_template() )?模型或自己版本的??get_template_part()等等。
從WordPress 5.5開始??,模板加載功能將允許使用$args?參數(shù)將其他參數(shù)傳遞給匹配的模板文件。
受影響的函數(shù)
為了提供適當(dāng)?shù)纳舷挛模嚓P(guān)的動(dòng)作掛鉤也已更新為傳遞此新$args參數(shù)。
get_headerget_footerget_sidebarget_template_part_{$slug}get_template_part
注意:?get_search_form()??從[44956]開始,已經(jīng)接受并將其他參數(shù)傳遞給搜索表單模板。但是,該$args參數(shù)是在與上述掛鉤同時(shí)添加的。它們是:
pre_get_search_form?(行動(dòng))search_form_format(過濾)get_search_form?(過濾)
示例
<?php
get_template_part(
'foo',
null,
array(
'class' => 'user',
'arbitrary_data' => array(
'foo' => 'baz',
'bar' => true,
),
...
)
);
在上面的示例中,可以通過本地范圍的?$args 變量在模板?foo.php?內(nèi)訪問get_template_part()通過$args變量傳遞的其他數(shù)據(jù)。
<?php
// Example foo.php template.
// Set defaults.
$args = wp_parse_args(
$args,
array(
'class' => '',
'arbitrary_data' => array(
'foo' => 'fooval',
'bar' => false,
),
...
)
);
?>
<div class="widget <?php echo esc_html_class( $args['class'] ); ?>">
<?php echo esc_html( $args['arbitrary_data']['foo'] ); ?>
</div>
注意:使用此新功能時(shí),任何當(dāng)前包含$args變量的模板文件都應(yīng)注意。對(duì)已加載的模板文件的$args任何修改將覆蓋使用上述函數(shù)傳遞的所有值。
該功能請(qǐng)求是8年前提交的,大家都久等了,感謝開發(fā)人員的努力!
要了解更多信息,請(qǐng)查看#21676。




