2016-12-16 8 views
3

In WooCommerce, meine Produkte sind in der Kategorie-Seite mit Details sowie "In den Warenkorb" -Knopf aufgeführt. Wenn der Benutzer auf die Schaltfläche Seite aktualisiert geklickt hat und auf der obersten Erfolgsmeldung mit Warenkorb-Schaltfläche angezeigt wurde.Zeige nur den letzten Artikel der Warenkorb-Seite, wenn nicht eingeloggt

, wenn ein Benutzer sie für mehrere Male tut (fügen Sie mehr als ein Artikel):

  • Wenn der Benutzer in den Warenkorb gelegt Seite alle Elemente mit Berechnung aufgeführt wird protokolliert.
  • aber Wenn der Benutzer nicht eingeloggt ist, sieht der Benutzer nur den letzten Artikel in der Warenkorbseite.

Ich brauche den Warenkorb gelegt Produkte zur Liste für nicht in user..Can jemand die Lösung für diese angemeldet ...

Hier ist meine Schleife/add-to-cart.php Code:

echo apply_filters('woocommerce_loop_add_to_cart_link', 
    sprintf('<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="button %s product_type_%s">%s</a>', 
     esc_url($product->add_to_cart_url()), 
     esc_attr($product->id), 
     esc_attr($product->get_sku()), 
     esc_attr(isset($quantity) ? $quantity : 1), 
     $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '', 
     esc_attr($product->product_type), 
     esc_html($product->add_to_cart_text()) 
    ), 
$product); 
+0

denke ich, Sitzungswert funktioniert nicht, wenn der Benutzer in – Lipsa

+0

dieser nicht angemeldet ist eine Standardpraxis für WooCommerce, WooCommerce Code statt Bearbeitung, konfigurieren Sie Ihre Optionen oder herauszufinden, was Woocoomerce zum Scheitern bringt wenn Sie einen Link teilen können wir Ihnen vielleicht besser helfen –

Antwort

2

aktualisiert und überprüft den Code (2)
Wagen Zahl Arbeiten und Korbseite zeigt nur letzte Wagen Artikel für nicht eingeloggte User

1) Wenn Sie nicht eingeloggt sind, wird nur Letzter Artikel angezeigt.
2) Wenn Sie eingeloggt sind, werden alle Artikel angezeigt.


Dies ist möglich, bearbeiten Sie WooCommerce cart.php Vorlage.

Sie müssen zuerst Ihr aktives Kind Thema (oder Thema) Ordner, der WooCommerce templates Ordner in Ihrem woocommerce Plugin-Ordner kopieren (falls noch nicht geschehen) und benennen Sie die neu hinzugefügte Ordner woocommerce. See this related documentation.

Ist das erledigt, Sie bearbeiten cart/cart.php Datei öffnen und den Code durch den folgenden ersetzt werden:

<?php 
/** 
* Cart Page 
* 
* This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php. 
* 
* HOWEVER, on occasion WooCommerce will need to update template files and you 
* (the theme developer) will need to copy the new files to your theme to 
* maintain compatibility. We try to do this as little as possible, but it does 
* happen. When this occurs the version of the template file will be bumped and 
* the readme will list any important changes. 
* 
* @see  https://docs.woocommerce.com/document/template-structure/ 
* @author WooThemes 
* @package WooCommerce/Templates 
* @version 2.3.8 
*/ 

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

wc_print_notices(); 

do_action('woocommerce_before_cart'); ?> 

<form action="<?php echo esc_url(wc_get_cart_url()); ?>" method="post"> 

<?php do_action('woocommerce_before_cart_table'); 

     // Cart count 
     $the_cart = WC()->cart->get_cart_contents_count(); 

     // initialising counter for the loop (out of it) 
     $count = 0; 

     // CHECKING JUST THE CART COUNT - TO BE REMOVED 
     echo '<p style="font-style:italic; color: grey; margin:10px;">(Debug Info only - Cart count: <strong>'. WC()->cart->get_cart_contents_count() . '</strong> item(s))</p>'; 
?> 

<table class="shop_table shop_table_responsive cart" cellspacing="0"> 
    <thead> 
     <tr> 
      <th class="product-remove">&nbsp;</th> 
      <th class="product-thumbnail">&nbsp;</th> 
      <th class="product-name"><?php _e('Product', 'woocommerce'); ?></th> 
      <th class="product-price"><?php _e('Price', 'woocommerce'); ?></th> 
      <th class="product-quantity"><?php _e('Quantity', 'woocommerce'); ?></th> 
      <th class="product-subtotal"><?php _e('Total', 'woocommerce'); ?></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); 

      if(is_user_logged_in() || (!is_user_logged_in() && $count == $cart_count)): 

      // adding 1 to counter 
      $count++; 

      if ($_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters('woocommerce_cart_item_visible', true, $cart_item, $cart_item_key)) { 
       $product_permalink = apply_filters('woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink($cart_item) : '', $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" data-product_id="%s" data-product_sku="%s">&times;</a>', 
           esc_url(WC()->cart->get_remove_url($cart_item_key)), 
           __('Remove this item', 'woocommerce'), 
           esc_attr($product_id), 
           esc_attr($_product->get_sku()) 
          ), $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_permalink) { 
           echo $thumbnail; 
          } else { 
           printf('<a href="%s">%s</a>', esc_url($product_permalink), $thumbnail); 
          } 
         ?> 
        </td> 

        <td class="product-name" data-title="<?php _e('Product', 'woocommerce'); ?>"> 
         <?php 
          if (! $product_permalink) { 
           echo apply_filters('woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key) . '&nbsp;'; 
          } else { 
           echo apply_filters('woocommerce_cart_item_name', sprintf('<a href="%s">%s</a>', esc_url($product_permalink), $_product->get_title()), $cart_item, $cart_item_key); 
          } 

          // Meta data 
          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">' . esc_html__('Available on backorder', 'woocommerce') . '</p>'; 
          } 
         ?> 
        </td> 

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

        <td class="product-quantity" data-title="<?php _e('Quantity', 'woocommerce'); ?>"> 
         <?php 
          if ($_product->is_sold_individually()) { 
           $product_quantity = sprintf('1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key); 
          } else { 
           $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); 
          } 

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

        <td class="product-subtotal" data-title="<?php _e('Total', 'woocommerce'); ?>"> 
         <?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 
      } 

      endif; 

     } 

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

       <?php if (wc_coupons_enabled()) { ?> 
        <div class="coupon"> 

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

         <?php do_action('woocommerce_cart_coupon'); ?> 
        </div> 
       <?php } ?> 

       <input type="submit" class="button" name="update_cart" value="<?php esc_attr_e('Update Cart', 'woocommerce'); ?>" /> 

       <?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"> 

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

</div> 

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

Dann sparen.

Wie Sie in Zeile 31 bis 38 sehen (außerhalb der foreach-Schleife der Katze), habe ich einen Code hinzugefügt, um die Gesamtzahl der Artikel zu ermitteln und einen Zähler auf Null zu initialisieren. Ich habe auch die Warenkorbanzahl vorläufig angezeigt (Sie können diese Linie entfernen, da sie nur zum Testen ist).

Ich füge eine bedingte if-Anweisung, die tun wird, was man erwartet:

if(is_user_logged_in() || (!is_user_logged_in() && $count == $cart_count)): 

Kurz nach diesem Zustand erhöhe ich den $count Variable (die in dem Zustand ist).

Dieses getestet und perfekt funktioniert jetzt ...

+0

Dies funktioniert nicht .... Der Wert ist immer 1 für WC() -> cart-> get_cart_contents_count() – Lipsa

+0

Dieser Code funktioniert nicht @LoicTheAztec – Lipsa

+0

@Lipsa Ich habe das getestet Zeit und mache ein paar kleine Änderungen. ** Es funktioniert perfekt **. Bitte, zögern Sie nicht, es auf meinem Live-Raw-Test-Server zu versuchen (Sie haben die Zugriffe zu Beginn meiner Antwort). Und ** 'WC() -> cart-> get_cart_contents_count()' funktioniert perfekt **, um die Anzahl der Artikel im Warenkorb zu erhalten – LoicTheAztec

Verwandte Themen