我正在使用Wordpress主题。它是一个产品展示,我的客户需要我添加一个功能,在一个小的方形中可视地表示每种产品的可用颜色。 (div)将background-color
css属性设置为该颜色。
在wordpress中,我将每个产品帖子设置为一个名为" colorStock"的自定义元字段。他们可以在逗号分隔列表中列出可用的颜色。
这样的事情:
rojo, azul, verde, amarillo
该列表采用西班牙语和颜色名称,以便为管理此页面的不精通用户提供便利。
所以,我想要做的是一个函数,它将获取这些元字段值,将它们放在一个数组中,并为每个项目执行不同的操作。
为什么呢?好吧,因为这些值将用于为代表颜色的小div设置css background-color
。
所以,我需要做的是取每个值,让我们说" rojo",然后让函数检查rojo
是否在可用列表中(& #34;支持")颜色并将其输出为与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
和$myArray
输出:
Array ( [0] => rojo [1] => verde [2] => azul )
答案 0 :(得分:3)
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>';
}
您可以尝试这样的操作,您需要将西班牙语值映射到正确的十六进制css值。我希望它有所帮助!有关css颜色的列表,请访问http://www.w3schools.com/cssref/css_colornames.asp
答案 1 :(得分:2)
您可以创建一个简单的地图:
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];
}
}
}