我正在开发此网站:baikumotor.com
我在functions.php
:
function colorStock(){
function display_color($color)
{
echo "<div class=\"colorStockItem\" style=\"background: ". $color .";\"></div>";
}
$postID = get_the_ID();
$colorStock = get_post_meta($postID, 'colorStock', true); //Get Colours available
if ($colorStock != ""){
$myArray = explode(', ', $colorStock);
//print_r($myArray);
//echo $myArray;
foreach ($myArray as $item){
$css_colors = array('naranja' => '#f58e08',
'rojo' => '#d40000',
'azul' => '#3086d6',
'blanco' => '#ffffff',
'negro' => '#000000',
'plata' => '#d0d0d0');
foreach ( $css_colors as $colorname => $value) {
if ($colorname == $item) {
display_color($value);
}
}
}
}
}
它应该显示每辆自行车的颜色。通过从每个帖子的自定义元字段中获取颜色的名称(如果可用)。
问题在于,每当我将colorStock();
函数放置在产品循环中时,它将在最新的自行车中正常加载,但是一旦它到达应该加载下一个产品的颜色的点,它将停止加载内容(HTML)并使页面不完整。
我想知道为什么它会破坏页面加载以及如何解决这个问题。
谢谢!
答案 0 :(得分:1)
我会以不同的方式组织一切。尝试重写你的功能:
function colorStock($colors)
{
$css_colors = array('naranja' => '#f58e08',
'rojo' => '#d40000',
'azul' => '#3086d6',
'blanco' => '#ffffff',
'negro' => '#000000',
'plata' => '#d0d0d0');
$colors = str_replace(' ', '', $colors); //Strip out the spaces first
$myArray = explode(',', $colors);
$output = '';
foreach($css_colors as $colorname => $value){
if(in_array($colorname, $myArray)
$output .= '<div class="colorStockItem" style="background: '.$value.';"></div>';
}
return $output;
}
然后像你这样在你的循环中调用:
<?php
$postID = get_the_ID();
$colorstock = get_post_meta($postID, 'colorStock', true);
if(have_posts()) : while(have_posts()) : the_post();
?>
<!-- YOUR LOOP CONTENTS -->
<?php
//YOUR COLORS
echo $colorstock ? colorStock($colorstock) : 'No colors found';
endwhile;endif;
?>
其他建议:为了让事情更加有条理,您可以完全取消检查颜色数组,并坚持使用样式表中的类名来定义背景颜色:
function colorStock($colors)
{
$colors = str_replace(' ', '', $colors); //Strip out the spaces first
$myArray = explode(',', $colors);
$output = '';
foreach($myArray as $class)
$output .= '<div class="'.$class.' colorStockItem"></div>';
return $output;
}
这样打电话:
<?php
$postID = get_the_ID();
$colorstock = get_post_meta($postID, 'colorStock', true);
if(have_posts()) : while(have_posts()) : the_post();
?>
<!-- YOUR LOOP CONTENTS -->
<?php
//YOUR COLORS
echo $colorstock ? colorStock($colorstock) : 'No colors found';
endwhile;endif;
?>
然后在你的样式表中:
<style type="text/css">
.colorStockItem{background: #000;} /*DEFAULT*/
.naranja{background: #f58e08;}
.rojo{background: #d40000;}
.azul{background: #3086d6;}
.blanco{background: #FFF;}
.negro{background: #000;}
.plata{background: #d0d0d0;}
</style>
但是你可能有理由把它分开,所以只要做你认为最好的事情。