2015-06-18 5 views
0

Я пытаюсь написать условие if для WordPress Woocommerce PHP читает текстовую строку, если для определенного слова тогда условие else возвращает false.Как читать атрибут продукта woocommerce по условию

Вот пример того, что я ищу: cart.php

<?php 
/** 
* Cart Page 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  2.3.0 
*/ 

if (! defined('ABSPATH')) { 
    exit; // Exit if accessed directly 
} 

wc_print_notices(); 

do_action('woocommerce_before_cart'); ?> 

<form id="cart-table" action="<?php echo esc_url( WC()->cart->get_cart_url()); ?>" method="post"> 
<?php do_action('woocommerce_before_cart_table'); ?> 
<table class="shop_table cart" cellspacing="0"> 
    <thead> 
     <tr> 
      <th class="product-remove">&nbsp;</th> 
      <th class="product-thumbnail">&nbsp;</th> 
      <th class="product-name"><?php _e('Product', 'yit'); ?></th> 
      <th class="product-price"><?php _e('Price', 'yit'); ?></th> 
      <th class="product-quantity"><?php _e('Quantity', 'yit'); ?></th> 
      <th class="product-subtotal"><?php _e('Total', 'yit'); ?></th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php do_action('woocommerce_before_cart_contents'); ?> 

     <?php 
      foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
       $_product = apply_filters('woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key); 
       $product_id = apply_filters('woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key); 
       $attributes = $_product->get_attributes(); 

       if ($_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters('woocommerce_cart_item_visible', true, $cart_item, $cart_item_key)) { 
        ?> 
        <tr class = "<?php echo esc_attr(apply_filters('woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key)); ?>"> 

         <td class="product-remove"> 
          <?php 
           echo apply_filters('woocommerce_cart_item_remove_link', sprintf('<a href="%s" class="remove" title="%s">&times;</a>', esc_url( WC()->cart->get_remove_url($cart_item_key)), __('Remove this item', 'yit')), $cart_item_key); 
          ?> 
         </td> 

         <td class="product-thumbnail"> 
          <?php 
          $thumbnail = apply_filters('woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key); 

          if (! $_product->is_visible()) 
           echo $thumbnail; 
          else 
           printf('<a href="%s">%s</a>', $_product->get_permalink($cart_item), $thumbnail); 
          ?> 
         </td> 

         <td class="product-name"> 
          <?php 
          if (! $_product->is_visible()) 
           echo apply_filters('woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key); 
          else 
           echo apply_filters('woocommerce_cart_item_name', sprintf('<a href="%s">%s</a>', $_product->get_permalink($cart_item), $_product->get_title()), $cart_item, $cart_item_key); 

           // Meta data Remove 'lala' from echo here by Rupom 
           echo ''. WC()->cart->get_item_data($cart_item); 

           // Backorder notification 
           if ($_product->backorders_require_notification() && $_product->is_on_backorder($cart_item['quantity'])) 
            echo '<p class="backorder_notification">' . __('Available on backorder', 'yit') . '</p>'; 
          ?> 
         </td> 

         <td class="product-price"> 
          <?php 
           echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key); 
          ?> 
         </td> 

     <td class="product-quantity"> 

      <?php 

      if ($_product->is_sold_individually()) { 
       $product_quantity = sprintf('1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key); 
      } 


      elseif ($_product->is_type('simple')){ 
      $product_quantity = woocommerce_quantity_input(array(
        'input_name' => "cart[{$cart_item_key}][qty]", 
        'input_value' => $cart_item['quantity'], 
        'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), 
        'min_value' => '0' 
       ), $_product, false); 
      } 

      elseif(isset($attributes['Color'])){ 
        $product_quantity = woocommerce_quantity_input(array(
          'input_name' => "cart[{$cart_item_key}][qty]", 
          'input_value' => $cart_item['quantity'], 
          'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), 
          'min_value' => '0' 
         ), $_product, false); 

        }else{ 
        $product_quantity = sprintf('<input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key); 
        } 


      echo apply_filters('woocommerce_cart_item_quantity', $product_quantity, $cart_item_key); 
      ?> 
     </td> 

         <td class="product-subtotal"> 
          <?php 
           echo apply_filters('woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal($_product, $cart_item['quantity']), $cart_item, $cart_item_key); 
          ?> 
         </td> 
        </tr> 
        <?php 
       } 
      } 

     do_action('woocommerce_cart_contents'); 
     ?> 
     <tr> 
      <td colspan="6" class="actions"> 

       <?php if (WC()->cart->coupons_enabled()) { ?> 
        <div class="coupon"> 

         <label for="coupon_code"><?php _e('Coupon', 'yit'); ?>:</label> <input name="coupon_code" class="input-text" id="coupon_code" value="" /> <input type="submit" class="button" name="apply_coupon" value="<?php _e('Apply Coupon', 'yit'); ?>" /> 

         <?php do_action('woocommerce_cart_coupon'); ?> 

        </div> 
       <?php } ?> 

       <input type="submit" class="button" name="update_cart" value="<?php _e('Update Cart', 'yit'); ?>" /> <input type="submit" class="checkout-button button alt" name="proceed" value="<?php _e('Proceed to Checkout &rarr;', 'yit'); ?>" /> 

       <?php do_action('woocommerce_cart_actions'); ?> 

       <?php wp_nonce_field('woocommerce-cart') ?> 
      </td> 
     </tr> 

     <?php do_action('woocommerce_after_cart_contents'); ?> 
    </tbody> 
</table> 
<?php do_action('woocommerce_after_cart_table'); ?> 
</form> 
<div class="cart-collaterals row-fluid"> 
<?php do_action('woocommerce_cart_collaterals'); ?> 
<?php //woocommerce_cart_totals(); ?> 
<?php woocommerce_shipping_calculator(); ?> 
</div> 
<?php do_action('woocommerce_after_cart'); ?> 

SEE КОЛИЧЕСТВА:

<td class="product-quantity"> 

      <?php 

      if ($_product->is_sold_individually()) { 
       $product_quantity = sprintf('1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key); 
      } 


      elseif ($_product->is_type('simple')){ 
      $product_quantity = woocommerce_quantity_input(array(
        'input_name' => "cart[{$cart_item_key}][qty]", 
        'input_value' => $cart_item['quantity'], 
        'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), 
        'min_value' => '0' 
       ), $_product, false); 
      } 

      elseif(isset($attributes['Color'])){ 
        $product_quantity = woocommerce_quantity_input(array(
          'input_name' => "cart[{$cart_item_key}][qty]", 
          'input_value' => $cart_item['quantity'], 
          'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), 
          'min_value' => '0' 
         ), $_product, false); 

        }else{ 
        $product_quantity = sprintf('<input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key); 
        } 


      echo apply_filters('woocommerce_cart_item_quantity', $product_quantity, $cart_item_key); 
      ?> 
     </td> 

SEE THE RESULT Пожалуйста, помогите. что должно быть , если условие для атрибута продукта.

+0

Как получить атрибут продукта из корзины? –

+0

Я добавил изображение этой корзины Мне нужно поле Количество для атрибута цвета –

ответ

0

Я считаю, что вы ищете isset():

if (isset($attributes['Color'])){ 

Или, если вы ищете определенный цвет:

if (isset($attributes['Color']) && $attributes['Color'] == 'somecolor'){ 
+0

На самом деле я работаю на странице корзины темы woocommerce. Если переменная продукта имеет поле количества отображаемых атрибутов Color else, удалите для всего остального атрибута –

+0

OK ... тогда я не понимаю, как это не отвечает на ваш вопрос. – rnevius

+0

У меня есть вопрос. Пожалуйста, проверьте. Что я сделал ошибка –

0

Если вы ищете определенный цвет, то вы также можно использовать -

global $product; 
$color = $product->get_attribute('Color'); 

а затем зарегистрировать if состояние.

EDIT:

Если вы находитесь на странице корзины, то global $product не годится для вас. Вам нужно будет перебрать массив продуктов, добавленных в корзину, а затем проверить атрибуты.

См, если приведенный ниже код поможет вам -

global $woocommerce; 

    $cart = $woocommerce->cart->get_cart(); 

    foreach ($cart as $key => $values) { 
     $product = $values['data']; 
     $attributes = $product->get_attributes(); 

     if(isset($attributes['Color'])){ //can use in_array() as well 
      //Something 
     } 
     else{ 
      //Another Something 
     } 
    } 

Вам нужно будет поставить выше код в функции и зацепить надлежащий WooCommerce фильтр.

+0

Я знаю, что это работает, но на самом деле я работаю на странице корзины темы woocommerce. Если переменная продукта имеет поле количества отображаемых атрибутов цвета, удалите поле количества для всего другого атрибута –

+0

. Я улучшил свой ответ, пожалуйста, проверьте. – WisdmLabs

+0

У меня есть вопрос. Пожалуйста, проверьте. Что я сделал ошибка –