我需要为包含短代码的Wordpress创建一个列系统,这不是问题,但我试图用更少的代码来实现它。
我有一个包含所需数据的数组,我遍历它,创建一个唯一命名的函数并将其设置为短代码函数。第三步是个谜。如何从变量创建函数。
以下是一个例子,它应该如何完成:
$data[] = "first";
$data[] = "second";
foreach($data as $key => $value) {
function $value($atts,$content) {
return '<div class="'.$value.'">'.$content.'</div>';
}
add_shortcode($value,$value);
}
然而,似乎不可能让它在PHP中像那样工作。有没有办法使这项工作,因为我不想写所有(相同)功能分开。我可以使短代码类似[col first]text[/col]
,但客户希望每个代码都有不同的名称。
答案 0 :(得分:5)
您可以使用double dollar语法将变量的值用作变量标识符
示例:
$variable = "test";
$$variable = "value of test"
echo $test; //or echo $$variable;
我从未尝试过,但你想尝试一下:
foreach($data as $key => $value)
{
function $$value($atts,$content)
{
}
add_shortcode($value,$value);
}
的功能
如果您使用PHP 5.3或更高版本,那么您可以这样做:
$$value = function()
{
}
应该可以正常工作
答案 1 :(得分:0)
我不确定WP如何调用这些函数,但是如果它使用call_user_func
那么你可能会因使用虚拟方法的对象而作弊:
class fake_functions {
function __call($name, $params) {
return '<div class="'.$name.'">'.$params[1].'</div>';
}
}
$obj = new fake_functions();
foreach ($data as $value) {
add_shortcode($value, array($obj,$value));
}