Применить правила css в состоянии php - PullRequest
1 голос
/ 12 апреля 2020

Я добавляю некоторые пользовательские сообщения о состоянии акций в WooCommerce с некоторым кодом PHP, например:

    //Ajoute "En stock" sous chaque produit
function show_stock() {
    global $product;
    if ( $product->managing_stock() ) { // if manage stock is enabled 
        if (( number_format($product->get_stock_quantity(),0,'','') > 0 ) && ( number_format($product->get_stock_quantity(),0,'','') < 100 )) { // if in stock
            echo '<div class="remaining" style="color:green;">En stockk</div>';
        } elseif (( number_format($product->get_stock_quantity(),0,'','') >= 100 ) && ( number_format($product->get_stock_quantity(),0,'','') < 1000 )) {
            echo '<div class="remaining" style="color:#f2cd00;">Livraison sous 1 mois</div>';
        } elseif (( number_format($product->get_stock_quantity(),0,'','') >= 1000 ) && ( number_format($product->get_stock_quantity(),0,'','') < 2000 )) {
            echo '<div class="remaining" style="color:#f2cd00;">Livraison sous 7 jours</div>';
        } elseif ( number_format($product->get_stock_quantity(),0,'','') < 1 ) {
            echo '<div class="remaining" style="color:red;">Rupture</div>'; 
        }
    }
}

add_action('woocommerce_after_shop_loop_item','show_stock', 10);
add_action ('woocommerce_before_add_to_cart_form','show_stock');

И я применяю это правило CSS, чтобы make исчезла со стандартным сообщением WooCoomerce в моем отдельном продукте и избегайте двойных сообщений о состоянии акций.

p.stock{
    display: none;
}

Проблема, которая у меня есть, заключается в том, что мой код PHP больше не работает, когда акции = 0, а затем мое последнее условие из кода php не применяется ( не отображается мое пользовательское сообщение "Разрыв").

И поскольку я применил свое правило CSS, когда моя акция = 0, у меня нет статуса акции.

Тогда я хотел бы применить правило CSS, только когда моя акция> 0. Или найдите способ заставить применить мое последнее условное php на складе <1. </p>

: '(спасибо

Ответы [ 3 ]

0 голосов
/ 12 апреля 2020

Следующий код показывает, как изменить текст и класс, как на странице Одиночный продукт + добавить html на странице Магазин / Категория

In таким образом, вы можете настроить или добавить свой пользовательский текст / класс доступности.

Ps код может быть короче, но был расширен, чтобы вы могли четко видеть, где и где выполняется настройка.


woocommerce_get_availability_text - Изменить текст доступности - Отдельная страница продукта

woocommerce_get_availability_class - Изменить класс доступности - Страница отдельного продукта

woocommerce_after_shop_loop_item - Добавить html - Магазин / Страница категории


PHP: Добавить в functions.php

// Change availability text - Single product page
function change_stock_text( $text, $product ) { 
    // Managing stock enabled
    if ( $product->managing_stock() ) {

        // Get stock status
        $stock_quantity = $product->get_stock_quantity();

        if ( $stock_quantity == 0 ) {
            $text = __( 'Text 1', 'woocommerce' );
        } elseif ( $stock_quantity >= 1 && $stock_quantity < 100 ) {
            $text = __( 'Text 2', 'woocommerce' );          
        } elseif ( $stock_quantity >= 100 && $stock_quantity < 1000 ) {
            $text = __( 'Text 3', 'woocommerce' );          
        } elseif ( $stock_quantity >= 1000 && $stock_quantity < 2000 ) {
            $text = __( 'Text 4', 'woocommerce' );          
        } else {
            $text = __( 'Text 5', 'woocommerce' );          
        }
    }

    // Output
    return $text;
}
add_filter( 'woocommerce_get_availability_text', 'change_stock_text', 10, 2 );

// Change availability class - Single product page
function change_stock_class( $class, $product ) {   
    // Managing stock enabled
    if ( $product->managing_stock() ) {

        // Get stock status
        $stock_quantity = $product->get_stock_quantity();

        if ( $stock_quantity == 0 ) {
            $class = 'custom-stock-green';
        } elseif ( $stock_quantity >= 1 && $stock_quantity < 100 ) {
            $class = 'custom-stock-orange';         
        } elseif ( $stock_quantity >= 100 && $stock_quantity < 1000 ) {
            $class = 'custom-stock-orange';         
        } elseif ( $stock_quantity >= 1000 && $stock_quantity < 2000 ) {
            $class = 'custom-stock-red';            
        } else {
            $class = 'custom-stock-some-color';     
        }
    }

    // Output    
    return $class;
}
add_filter( 'woocommerce_get_availability_class', 'change_stock_class', 10, 2 );

// Add html - Shop/Category page
function action_woocommerce_after_shop_loop_item() {
    global $product;

    // Managing stock enabled
    if ( $product->managing_stock() ) {

        // Get stock status
        $stock_quantity = $product->get_stock_quantity();

        if ( $stock_quantity == 0 ) {
            $stock_html = '<div class="custom-stock-green">' . __( 'Text 1', 'woocommerce' );
        } elseif ( $stock_quantity >= 1 && $stock_quantity < 100 ) {
            $stock_html = '<div class="custom-stock-orange">' . __( 'Text 2', 'woocommerce' );      
        } elseif ( $stock_quantity >= 100 && $stock_quantity < 1000 ) {
            $stock_html = '<div class="custom-stock-orange">' . __( 'Text 3', 'woocommerce' );  
        } elseif ( $stock_quantity >= 1000 && $stock_quantity < 2000 ) {
            $stock_html = '<div class="custom-stock-orange">' . __( 'Text 4', 'woocommerce' );          
        } else {
            $stock_html = '<div class="custom-stock-some-color">' . __( 'Text 5', 'woocommerce' );  
        }

        // Add closing div
        $stock_html .= '</div>';

        // Output
        echo $stock_html;
    }
}
add_action( 'woocommerce_after_shop_loop_item', 'action_woocommerce_after_shop_loop_item', 10, 0 );

CSS: Добавить во внешнюю таблицу стилей CSS файл темы или через плагин

.custom-stock-green {
    color: green;
}

.custom-stock-orange {
    color: #f2cd00;
}

.custom-stock-red {
    color: red;
}

.custom-stock-some-color {
    color: blueviolet;
}
0 голосов
/ 15 апреля 2020

OMG Большое спасибо 7uc1f3r и спасибо всем за ваш ответ и участие.

Я попробовал твой код, и он работает как шарм. Я не знал, как просто заменить состояние по умолчанию.

Я просто добавил CSS для одной страницы обработки, потому что пользовательский цвет не был взят, просто вызвал другой класс (stock.custom-stock- цвет)

Это последний код, адаптированный для моего сайта:

************************** *********************************PHP************** **************************

  // Change availability text - Single product page
function change_stock_text( $text, $product ) { 
    // Managing stock enabled
    if ( $product->managing_stock() ) {

        // Get stock status
        $stock_quantity = $product->get_stock_quantity();

        if ( $stock_quantity == 0 ) {
            $text = __( 'Rupture', 'woocommerce' );
        } elseif ( $stock_quantity >= 1 && $stock_quantity < 100 ) {
            $text = __( 'En stock', 'woocommerce' );          
        } elseif ( $stock_quantity >= 100 && $stock_quantity < 1000 ) {
            $text = __( 'Livraison sous 7 jour', 'woocommerce' );          
        } elseif ( $stock_quantity >= 1000 && $stock_quantity < 2000 ) {
            $text = __( 'Livraison sous 1 mois', 'woocommerce' );          
        } else {
            $text = __( 'Reliqua fournisseur', 'woocommerce' );          
        }
    }

    // Output
    return $text;
}
add_filter( 'woocommerce_get_availability_text', 'change_stock_text', 10, 2 );

// Change availability class - Single product page
function change_stock_class( $class, $product ) {   
    // Managing stock enabled
    if ( $product->managing_stock() ) {

        // Get stock status
        $stock_quantity = $product->get_stock_quantity();

        if ( $stock_quantity == 0 ) {
            $class = 'custom-stock-red';
        } elseif ( $stock_quantity >= 1 && $stock_quantity < 100 ) {
            $class = 'stock custom-stock-green';         
        } elseif ( $stock_quantity >= 100 && $stock_quantity < 1000 ) {
            $class = 'stock custom-stock-orange';         
        } elseif ( $stock_quantity >= 1000 && $stock_quantity < 2000 ) {
            $class = 'stock custom-stock-blueviolet';            
        } else {
            $class = 'stock custom-stock-purple';     
        }
    }

    // Output    
    return $class;
}
add_filter( 'woocommerce_get_availability_class', 'change_stock_class', 10, 2 );

// Add html - Shop/Category page
function action_woocommerce_after_shop_loop_item() {
    global $product;

    // Managing stock enabled
    if ( $product->managing_stock() ) {

        // Get stock status
        $stock_quantity = $product->get_stock_quantity();

        if ( $stock_quantity == 0 ) {
            $stock_html = '<div class="custom-stock-red">' . __( 'Rupture', 'woocommerce' );
        } elseif ( $stock_quantity >= 1 && $stock_quantity < 100 ) {
            $stock_html = '<div class="custom-stock-green">' . __( 'En stock', 'woocommerce' );      
        } elseif ( $stock_quantity >= 100 && $stock_quantity < 1000 ) {
            $stock_html = '<div class="custom-stock-orange">' . __( 'Livraison sous 7 jours', 'woocommerce' );  
        } elseif ( $stock_quantity >= 1000 && $stock_quantity < 2000 ) {
            $stock_html = '<div class="custom-stock-blueviolet">' . __( 'Livraison sous 1 mois', 'woocommerce' );          
        } else {
            $stock_html = '<div class="custom-stock-purple">' . __( 'Reliqua fournisseur', 'woocommerce' );  
        }

        // Add closing div
        $stock_html .= '</div>';

        // Output
        echo $stock_html;
    }
}
add_action( 'woocommerce_after_shop_loop_item', 'action_woocommerce_after_shop_loop_item', 10, 0 );

*************** *********CSS***********************

/*loop page > Custom stock status color */
.custom-stock-red {
    color: red;
}

.custom-stock-green {
    color: green;
}

.custom-stock-orange {
    color: #f4a400;
}

.custom-stock-blueviolet {
    color: blueviolet;
}

.custom-stock-purple {
    color: purple;
}

/*single product page > Custom stock status color */
.stock.custom-stock-red {
    color: red !important;
}

.stock.custom-stock-green {
    color: green !important;
}

.stock.custom-stock-orange {
    color: #f2cd00 !important;
}

.stock.custom-stock-blueviolet {
    color: blueviolet !important;
}

.stock.custom-stock-purple {
    color: purple !important;
}

****** *********************** БЛАГОДАРЮ ВАМ ************************ *******

0 голосов
/ 12 апреля 2020

Я рекомендую рефакторинг вашего кода, потому что ваш логин c верен, но ваше семанти c не так уж и много.

1 - определите тип для возврата $product->get_stock_quantity()

2 - В php номер типа также эквивалентен строке (потому что как тип Dynami c)

3 - Убедитесь, что $product->get_stock_quantity() возвращает значение, когда в списке пусто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...