Мне нужна помощь в следующем:
Я создаю сайт электронной коммерции с использованием плагина WordPress Woocommerce и имею ряд продуктов с вариациями, которые появляются в формате сетки. Поскольку вы, возможно, знаете, что способ отображения Woocommerce по умолчанию использует раскрывающиеся меню, которое не является подходящим для рынка пользователей, на которых я нацеливаюсь. Вместо этого я нашел фрагмент кода из www.eggplantstudios.ca/woocommerce-product-variation-add-cart-grid/, который изменяет отображение вариантов отображения в формате сетки, каждый со своей кнопкой «Добавить в корзину» ,
Это отлично работает.
Тем не менее, моя следующая задача заключалась в том, чтобы найти что-то, что установило бы минимальный лимит количества для отдельных вариантов. Я исследовал и нашел плагин, предлагаемый WooThemes 'Min / max qty'. Я установил и установил плагин, используя документацию, установил лимиты в бэкэнд, и я был готов к работе.
К сожалению, этот плагин не работал и отображает сообщение об ошибке независимо от того, сколько я заказываю. См. Ссылку здесь
Первым моим шагом было связаться с Woothemes и спросить, что может вызвать проблему. Они вернулись ко мне с шагами, чтобы определить проблему и сказали мне изменить тему на WordPress по умолчанию. Это и сработало.
Поэтому я предполагаю, что код, добавленный мной с сайта www.eggplantstudios.ca/woocommerce-product-variation-add-cart-grid/, противоречит плагину …: (((
Теперь, имея небольшой опыт работы в Php, я не уверен, как это сделать, чтобы заставить его работать. Я действительно хочу сохранить сетку так, как я думаю, это лучший способ отображения вариаций.
Может ли кто-нибудь указать мне, где может возникнуть проблема? Это простое решение?
Я ценю любую помощь 🙂
благодаря
Код из моего файла functions.php:
function woocommerce_variable_add_to_cart(){ global $product, $post; $variations = find_valid_variations(); // Check if the special 'price_grid' meta is set, if it is, load the default template: if ( get_post_meta($post->ID, 'price_grid', true) ) { // Enqueue variation scripts wp_enqueue_script( 'wc-add-to-cart-variation' ); // Load the template wc_get_template( 'single-product/add-to-cart/variable.php', array( 'available_variations' => $product->get_available_variations(), 'attributes' => $product->get_variation_attributes(), 'selected_attributes' => $product->get_variation_default_attributes() ) ); return; } // Cool, lets do our own template! ?> <table class="variations variations-grid" cellspacing="0"> <thead> <tr> <th>Container Size</th> <th>Height</th> <th>Description</th> <th>Quantity</th> </tr> </thead> <tbody> <?php foreach ($variations as $key => $value) { if( !$value['variation_is_visible'] ) continue; ?> <tr> <?php foreach($value['attributes'] as $key => $val ) { $val = str_replace(array('','_'), ' ', $val); printf( '<td class="attr attr-%s">%s</td> ', $key, ucwords($val) ); } ?> <td class="variation-description"> <?php $desc = $value['variation_description'] ?> <?php if($desc) { ?> <?php echo $desc ?> <?php }?> </td> <td> <?php woocommerce_quantity_input(); ?></td> <td> <?php echo $value['price_html'];?> </td> <td> <?php if( $value['is_in_stock'] ) { ?> <form class="cart" action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'> <?php if(!empty($value['attributes'])){ foreach ($value['attributes'] as $attr_key => $attr_value) { ?> <input type="hidden" name="<?php echo $attr_key?>" value="<?php echo $attr_value?>"> <?php } } ?> <button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span> Add to cart</button> <input type="hidden" name="variation_id" value="<?php echo $value['variation_id']?>" /> <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" /> <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" /> </form> <?php } else { ?> <p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p> <?php } ?> </td> </tr> <?php } ?> </tbody> </table> <?php } function find_valid_variations() { global $product; $variations = $product->get_available_variations(); $attributes = $product->get_attributes(); $new_variants = array(); // Loop through all variations foreach( $variations as $variation ) { // Peruse the attributes. // 1. If both are explicitly set, this is a valid variation // 2. If one is not set, that means any, and we must 'create' the rest. $valid = true; // so far foreach( $attributes as $slug => $args ) { if( array_key_exists("attribute_$slug", $variation['attributes']) && !empty($variation['attributes']["attribute_$slug"]) ) { // Exists } else { // Not exists, create $valid = false; // it contains 'anys' // loop through all options for the 'ANY' attribute, and add each foreach( explode( '|', $attributes[$slug]['value']) as $attribute ) { $attribute = trim( $attribute ); $new_variant = $variation; $new_variant['attributes']["attribute_$slug"] = $attribute; $new_variants[] = $new_variant; } } } // This contains ALL set attributes, and is itself a 'valid' variation. if( $valid ) $new_variants[] = $variation; } return $new_variants; }