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"> </th>
<th class="product-thumbnail"> </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">×</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) . ' ';
} 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 ...
denke ich, Sitzungswert funktioniert nicht, wenn der Benutzer in – Lipsa
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 –