在自定义 wordpress 小部件中使用 foreach 来转义并为输入分配值



我有这段代码,是从我为自定义WordPress主题开发的自定义小部件中提取的。 我对代码有问题,这是因为我想使用 foreach 循环通过使用 wordpress 中内置的esc_函数来转义值。 我面临的问题是,如果我尝试使用$instance[$key]来检查值是否已设置,如果我var_dump,我将看到数组各个键的值,而不是键本身,所以我无法将键分配给$instance变量。 我还想使用 $key 来设置代码中使用的相对变量,如$title$claime。 我该如何解决这个问题?

更清楚的是,我的期望如下:

$instance = array( 'title' => 'lorem', 'claime' => 'ipsum' );
foreach( $instance as $key => $val ){
// here the key I need is title so $instance[$key] needs to be $instance['title'] and $key become the $title variable.
$key = isset( $instance[$key] )? esc_attr( $instance[$key] ) : ''; 
}

我的实际代码是:


foreach( $instance as $key => $val ){
if( $key === 'text' ){
$text = isset( $instance['text'] )? wp_kses( $instance['text'], $this->allowed ) : '';
}
#$key = isset( $instance[$key] ) ? esc_attr( $instance[$key] ) : '';
}

如果你想从数组键中创建新变量,你可以使用php的提取函数:https://www.php.net/manual/en/function.extract.php

<?php
$var_array = array("color" => "blue", "size"  => "medium");
extract( $var_array );
echo $color, $size; // blue medium 
?>

但不要在包含用户输入的数组上使用它。

最新更新