如何根据两种语言的运输类别显示产品的可用性

时间:2019-04-15 07:08:25

标签: php woocommerce translation wpml

我正在尝试通过4种规则以两种语言显示产品的自定义可用性文本。

我设置了此功能,但同时获得了两个可用性文本(来自英语和希腊语)。我想显示每种语言的特定消息。

//Availability Text for products 
add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $_product ) {
   global $product;
    $defined_shipping_class = "Κατόπιν Παραγγελίας 7-15 ημέρες";
    $defined_shipping_class_en = "Available 7-15 days";

 $term = get_term_by( 'slug', $product->get_shipping_class(), 'product_shipping_class' );

 //Availability for greek language

 if(ICL_LANGUAGE_CODE=='gr');{

     //message if has shipping class
     if( is_a($term, 'WP_Term') && $term->name == $defined_shipping_class ){
        echo '<p class="product-shipping-class">' . $term->name . '</p>';
    }
     //message if is low stock
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() >= 1 && $product->get_stock_quantity() <= 10 ) {
    echo 'Διαθεσιμότητα: ' . $product->get_stock_quantity() . ' τεμ.'; 
    }
     // message if is  out of stock 
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() <1  ) {
    echo "<p><a href='https://...../επικοινωνια/' style='background-color:#e1e2e2; padding:5px 15px;color:#ed1c24;'>Αναμένεται. Επικοινωνήστε μαζί μας.</a></p>" ;
    }
     // message if is in stock
    elseif( $_product->is_in_stock() && $product->get_stock_quantity() > 11  ) {
       echo  'Σε απόθεμα' . $product->get_stock_quantity() . ' τεμ.'; 
    }

 }

 //Availability for english language
if(ICL_LANGUAGE_CODE=='en'); {

    //message if has shipping class
    if( is_a($term, 'WP_Term') && $term->name == $defined_shipping_class_en ){
        echo '<p class="product-shipping-class">' . $term->name . '</p>';
    }
    //message if is low stock
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() >= 1 && $product->get_stock_quantity() <= 10 ) {
    echo 'Αvailability: ' . $product->get_stock_quantity() . ' pcs.'; 
    }
    // message if is  out of stock 
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() <1  ) {
    echo "<p><a href='https://....../επικοινωνια/' style='background-color:#e1e2e2; padding:5px 15px;color:#ed1c24;'>Expected.Please contact us.</a></p>" ;
    }
    // message if is in stock
    elseif( $_product->is_in_stock() && $product->get_stock_quantity() > 11  ) {
       echo  'In stock' . $product->get_stock_quantity() . ' pcs.'; 
    }

 }
}

我想显示每种语言的特定消息。此代码将两种语言的文本一起打印。当我将elseif设为英语时,它破坏了网站。我不知道我在做什么错...预先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

看看您的if语句:如果用分号结束它们,则下面的块不再与该语句连接,因此无论条件如何,它都将被执行。

更清楚地说:以下两个块产生相同的输出:

// First
if(ICL_LANGUAGE_CODE=='en'); {
    echo 'test';
}

// Second
echo 'test';

如果您在该if行中删除分号,则在条件不触发的情况下不显示第一个输出

答案 1 :(得分:0)

这解决了问题:

add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $_product ) {
   global $product;
    $defined_shipping_class = "Κατόπιν Παραγγελίας 7-15 ημέρες";
    $defined_shipping_class_en = "Available 7-15 days";

 $term = get_term_by( 'slug', $product->get_shipping_class(), 'product_shipping_class' );

 //Availability for greek language
 if(ICL_LANGUAGE_CODE=='en') {

    //message if has shipping class
    if( is_a($term, 'WP_Term') && $term->name == $defined_shipping_class_en ){
        echo '<p class="product-shipping-class">' . $term->name . '</p>';
    }
    //message if is low stock
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() >= 1 && $product->get_stock_quantity() <= 10 ) {
    echo 'Αvailability: ' . $product->get_stock_quantity() . ' pcs.'; 
    }
    // message if is  out of stock 
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() <1  ) {
    echo "<p><a href='https://....../επικοινωνια/' style='background-color:#e1e2e2; padding:5px 15px;color:#ed1c24;'>Expected.Please contact us.</a></p>" ;
    }
    // message if is in stock
    elseif( $_product->is_in_stock() && $product->get_stock_quantity() > 11  ) {
       echo  'In stock' . $product->get_stock_quantity() . ' pcs.'; 
    }

 }


 //Availability for english language
elseif(ICL_LANGUAGE_CODE=='en') {

    //message if has shipping class
    if( is_a($term, 'WP_Term') && $term->name == $defined_shipping_class_en ){
        echo '<p class="product-shipping-class">' . $term->name . '</p>';
    }
    //message if is low stock
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() >= 1 && $product->get_stock_quantity() <= 10 ) {
    echo 'Αvailability: ' . $product->get_stock_quantity() . ' pcs.'; 
    }
    // message if is  out of stock 
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() <1  ) {
    echo "<p><a href='https://....../επικοινωνια/' style='background-color:#e1e2e2; padding:5px 15px;color:#ed1c24;'>Expected.Please contact us.</a></p>" ;
    }
    // message if is in stock
    elseif( $_product->is_in_stock() && $product->get_stock_quantity() > 11  ) {
       echo  'In stock' . $product->get_stock_quantity() . ' pcs.'; 
    }
}
    else{

     //message if has shipping class
     if( is_a($term, 'WP_Term') && $term->name == $defined_shipping_class ){
        echo '<p class="product-shipping-class">' . $term->name . '</p>';
    }
     //message if is low stock
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() >= 1 && $product->get_stock_quantity() <= 10 ) {
    echo 'Διαθεσιμότητα: ' . $product->get_stock_quantity() . ' τεμ.'; 
    }
     // message if is  out of stock 
    elseif ( $_product->is_in_stock() && $product->get_stock_quantity() <1  ) {
    echo "<p><a href='https://...../επικοινωνια/' style='background-color:#e1e2e2; padding:5px 15px;color:#ed1c24;'>Αναμένεται. Επικοινωνήστε μαζί μας.</a></p>" ;
    }
     // message if is in stock
    elseif( $_product->is_in_stock() && $product->get_stock_quantity() > 11  ) {
       echo  'Σε απόθεμα' . $product->get_stock_quantity() . ' τεμ.'; 
    }

 }


}