我正在使用Wordpress主题。这是一个产品展示区,我的客户需要我添加一个函数,以在一个小"正方形"(div)中直观地表示每个产品的可用颜色,并将background-color
css属性设置为该颜色。
在wordpress中,我设置每个产品帖子都有一个名为"colorStock"的自定义元字段,他们可以在逗号分隔的列表中列出可用的颜色。
类似这样的东西:
rojo, azul, verde, amarillo
该列表是西班牙语的,并带有颜色名称,以使管理该页面的不精明用户更容易处理。
所以,我想做的是一个函数,它将获取这些元字段值,将它们放在一个数组中,并对每个项执行不同的操作。
为什么?好吧,因为这些值将用于为表示颜色的小div设置css background-color
。
因此,我需要做的是获取每个值,比如"rojo",让函数检查rojo
是否在可用("支持")颜色列表中,并将其输出为与rojo
相关的有效颜色名称或值。(例如"rojo = "red"
或"rojo" = "#f5f5f5"
)。
到目前为止,我有这个代码:
function colorStock(){
$postID = get_the_ID();
$colorStock = get_post_meta($postID, 'colorStock', true); //Get Colours available
$myArray = explode(',', $colorStock);
//print_r($myArray);
//echo $myArray;
foreach ($myArray as $item){
if (in_array("rojo", $item)) {
echo "red";
}
if (in_array("verde", $item)) {
echo "green";
}
if (in_array("azul", $item)) {
echo "blue";
}
if (in_array("blanco", $item)) {
echo "white";
}
if (in_array("negro", $item)) {
echo "black";
}
if (in_array("amarillo", $item)) {
echo "yellow";
}
}
}
我知道我的in_array
用法可能根本没有意义,但问题是我需要函数获取每个数组项,看看它是否与任何等价列表项匹配,然后移动到下一个数组项。因此,无论管理员列出的是1种还是20种颜色,我都可以为每个项目输出一个单独的div
。
有什么想法吗?
编辑:
顺便说一下:$colorStock
输出:rojo, verde, azul, amarillo
CCD_ 11输出:Array ( [0] => rojo [1] => verde [2] => azul )
foreach ($myArray as $item){
$css_colors = array('verde' => '#008000',
'rojo' => '#ff0000',
'azul' => '#0000ff',
'blanco' => '#ffffff',
'negro' => '#000000',
'amarillo' => '#ffff00');
foreach ( $css_colors as $colorname => $value) {
if ($colorname == $item) {
display_color($value);
}
}
}
function display_color($color)
{
echo '<div style="width: 40px; height: 40px; background: '. $color . ';"> </div>';
}
你可以尝试这样的方法,你需要将西班牙语valus映射到正确的十六进制css值。我希望它能有所帮助!有关css颜色的列表,请访问此处http://www.w3schools.com/cssref/css_colornames.asp
您可以创建一个简单的映射:
function colorStock()
{
$postID = get_the_ID();
$colorStock = get_post_meta($postID, 'colorStock', true); //Get Colours available
$colors = explode(',', $colorStock);
$colorMap = array(
'rojo'=>'red',
'verde'=>'green'
);
foreach ($colors as $color) {
if (isset($colorMap[$color])) {
echo $colorMap[$color];
}
}
}