0

私はこのウェブサイトを開発しています: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);
                } 
            }
        } 
    }


}

各バイクで利用可能な色を表示することになっています。各投稿のカスタムmeta_fieldから色の名前(使用可能な場合)を取得します。

関数を製品ループ内に配置するcolorStock();と、最新のバイクでは正常にロードされますが、次の製品から色をロードする必要があるポイントに達するとすぐに、コンテンツのロードが停止します( HTML)を選択し、ページを不完全なままにします。

なぜページの読み込みが中断されるのか、そしてこれを修正する方法を知りたいのですが。

ありがとう!

4

1 に答える 1

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>

しかし、それを分割する理由があるかもしれないので、あなたが最善だと思うことをしてください.

于 2012-05-25T01:40:25.723 に答える