我正在尝试为我的WordPress主题构造一个中介功能,以处理所有检查和返回瞬变。我想从模板调用瞬态函数,如果不存在瞬态,则传递瞬态名称和函数以调用。此外,如果实际调用该函数,我需要传递参数。
我找不到将多个参数传递在一起以供以后使用的任何东西。对于多种用途,我可以依靠最终称为函数的默认参数,然后将第三个参数$args
设置为false
。我考虑使用序列化,但这一次是一个变量,我需要一次通过几个参数。
在哪里称为瞬态函数:
$posts = transitize('transientname', 'functionname', "4, false, array($post->projectsiteid)");
瞬态检查函数:
function transitize($transientname, $functionname, $args=false) {
if (false === ($transient_exists = get_site_transient($transientname))) {
$functionresult = ($args) ? $functionname($args) : $functionname();
set_site_transient($transientname, $functionresult, HOUR_IN_SECONDS);
return $functionresult;
}
else {
return $transient_exists;
}
}
如何准备第三个参数,其中包含3个参数以供以后使用,以使以后的函数调用有效?
将第三个参数更改为数组:
$posts = transitize('transientname', 'functionname', array(4, false, array($post->projectsiteid)));
更改此行以使用call_user_func_array
:
$functionresult = ($args) ? call_user_func_array($functionname, $args) : $functionname();