Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Совмещение корзины и оплаты в "Оформление заказа"

Тема в разделе "Вопросы, советы и доработки.", создана пользователем Stork.71, 9 янв 2014.

  1. Ruckus

    Ruckus

    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    <?php
    /**
    * Checkout Form
    *
    * @author WooThemes
    * @package WooCommerce/Templates
    * @version 2.0.0
    */
    if ( !defined( 'ABSPATH' ) )
    exit; // Exit if accessed directly

    global $woocommerce;

    wc_print_notices();

    do_action( 'woocommerce_before_checkout_form', $checkout );

    // If checkout registration is disabled and not logged in, the user cannot checkout
    if ( !$checkout->enable_signup && !$checkout->enable_guest_checkout && !is_user_logged_in() ) {
    echo apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) );
    return;
    }

    // filter hook for include new pages inside the payment method
    $get_checkout_url = apply_filters( 'woocommerce_get_checkout_url', WC()->cart->get_checkout_url() );
    ?>

    <form name="checkout" method="post" class="checkout" action="<?php echo esc_url( $get_checkout_url ); ?>">

    <?php if ( sizeof( $checkout->checkout_fields ) > 0 ) : ?>

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

    <div class="row">

    <div class="col2-set" id="customer_details">

    <div class="col-lg-6 col-md-6 col-sm-6">


    <?php do_action( 'woocommerce_checkout_billing' ); ?>
    <?php do_action( 'woocommerce_checkout_shipping' ); ?>

    </div>

    <div class="col-lg-6 col-md-6 col-sm-6">
    <div class="order-wrap">
    <?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>

    <h3 id="order_review_heading"><?php _e( 'Your order', 'woocommerce' ); ?></h3>

    <?php endif; ?>

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

    </div>
    </div>

    </div>
    </div><!--/row -->



    </form>

    <?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>
    Код моего checkouta themes/captiva/woocommerce/checkout/form-checkout.php. Не погу понять где все двоится вид оплаты.<div id="order_review"> и <div id="payment">.Может из-за них двоится. Я честно скажу в php, я чайник, может смогли бы посказать где искать решение проблемы.
    [​IMG]
    Вроде у стандартного Woocommerce не так много файлов.
     

    Вложения:

    • Checkout.png
      Checkout.png
      Размер файла:
      6,2 КБ
      Просмотров:
      160
    Последнее редактирование модератором: 15 окт 2015
  2. Stork.71

    Stork.71 Местный

    Сообщения:
    1.034
    Симпатии:
    254
    Баллы:
    83
    здесь вроде все чисто.
    А что в файлике review-order.php?
    вся задвоенность - в блоке <?php do_action( 'woocommerce_checkout_order_review' ); ?>
    Его надо найти.
    В functions.php ничего не вставляли? Хуков никаких?
     
  3. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Какая версию WooCommerce?
    Версия темы адаптирована под версию WooCommerce?
     
    • Полезно Полезно x 1
  4. Ruckus

    Ruckus

    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Да нет, там все оставил как есть.
    Вот код
    review-order
    <?php
    /**
    * Review order form
    *
    * @author WooThemes
    * @package WooCommerce/Templates
    * @version 2.1.8
    */
    if ( !defined( 'ABSPATH' ) )
    exit; // Exit if accessed directly
    ?>

    <?php if ( !is_ajax() ) : ?><div id="order_review"><?php endif; ?>

    <table class="shop_table">
    <thead>
    <tr>
    <th class="product-name"><?php _e( 'Product', 'woocommerce' ); ?></th>
    <th class="product-total"><?php _e( 'Total', 'woocommerce' ); ?></th>
    </tr>
    </thead>
    <tfoot>

    <tr class="cart-subtotal">
    <th><?php _e( 'Cart Subtotal', 'woocommerce' ); ?></th>
    <td><?php wc_cart_totals_subtotal_html(); ?></td>
    </tr>

    <?php foreach ( WC()->cart->get_coupons( 'cart' ) as $code => $coupon ) : ?>
    <tr class="cart-discount coupon-<?php echo esc_attr( $code ); ?>">
    <th><?php wc_cart_totals_coupon_label( $coupon ); ?></th>
    <td><?php wc_cart_totals_coupon_html( $coupon ); ?></td>
    </tr>
    <?php endforeach; ?>

    <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>

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

    <?php wc_cart_totals_shipping_html(); ?>

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

    <?php endif; ?>

    <?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
    <tr class="fee">
    <th><?php echo esc_html( $fee->name ); ?></th>
    <td><?php wc_cart_totals_fee_html( $fee ); ?></td>
    </tr>
    <?php endforeach; ?>

    <?php if ( WC()->cart->tax_display_cart === 'excl' ) : ?>
    <?php if ( get_option( 'woocommerce_tax_total_display' ) === 'itemized' ) : ?>
    <?php foreach ( WC()->cart->get_tax_totals() as $code => $tax ) : ?>
    <tr class="tax-rate tax-rate-<?php echo sanitize_title( $code ); ?>">
    <th><?php echo esc_html( $tax->label ); ?></th>
    <td><?php echo wp_kses_post( $tax->formatted_amount ); ?></td>
    </tr>
    <?php endforeach; ?>
    <?php else : ?>
    <tr class="tax-total">
    <th><?php echo esc_html( WC()->countries->tax_or_vat() ); ?></th>
    <td><?php echo wc_price( WC()->cart->get_taxes_total() ); ?></td>
    </tr>
    <?php endif; ?>
    <?php endif; ?>

    <?php foreach ( WC()->cart->get_coupons( 'order' ) as $code => $coupon ) : ?>
    <tr class="order-discount coupon-<?php echo esc_attr( $code ); ?>">
    <th><?php wc_cart_totals_coupon_label( $coupon ); ?></th>
    <td><?php wc_cart_totals_coupon_html( $coupon ); ?></td>
    </tr>
    <?php endforeach; ?>

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

    <tr class="order-total">
    <th><?php _e( 'Order Total', 'woocommerce' ); ?></th>
    <td><?php wc_cart_totals_order_total_html(); ?></td>
    </tr>

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

    </tfoot>
    <tbody>
    <?php
    do_action( 'woocommerce_review_order_before_cart_contents' );

    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 );

    if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_checkout_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-name">
    <?php echo apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key ); ?>
    <?php echo apply_filters( 'woocommerce_checkout_cart_item_quantity', ' <strong class="product-quantity">' . sprintf( '&times; %s', $cart_item['quantity'] ) . '</strong>', $cart_item, $cart_item_key ); ?>
    <?php echo WC()->cart->get_item_data( $cart_item ); ?>
    </td>
    <td class="product-total">
    <?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_review_order_after_cart_contents' );
    ?>
    </tbody>
    </table>

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

    <div id="payment">
    <?php if ( WC()->cart->needs_payment() ) : ?>
    <ul class="payment_methods methods">
    <?php
    $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
    if ( !empty( $available_gateways ) ) {

    // Chosen Method
    if ( isset( WC()->session->chosen_payment_method ) && isset( $available_gateways[WC()->session->chosen_payment_method] ) ) {
    $available_gateways[WC()->session->chosen_payment_method]->set_current();
    } elseif ( isset( $available_gateways[get_option( 'woocommerce_default_gateway' )] ) ) {
    $available_gateways[get_option( 'woocommerce_default_gateway' )]->set_current();
    } else {
    current( $available_gateways )->set_current();
    }

    foreach ( $available_gateways as $gateway ) {
    ?>
    <li class="payment_method_<?php echo $gateway->id; ?>">
    <input id="payment_method_<?php echo $gateway->id; ?>" type="radio" class="input-radio" name="payment_method" value="<?php echo esc_attr( $gateway->id ); ?>" <?php checked( $gateway->chosen, true ); ?> data-order_button_text="<?php echo esc_attr( $gateway->order_button_text ); ?>" />
    <label for="payment_method_<?php echo $gateway->id; ?>"><?php echo $gateway->get_title(); ?> <?php echo $gateway->get_icon(); ?></label>
    <?php
    if ( $gateway->has_fields() || $gateway->get_description() ) :
    echo '<div class="payment_box payment_method_' . $gateway->id . '" ' . ( $gateway->chosen ? '' : 'style="display:none;"' ) . '>';
    $gateway->payment_fields();
    echo '</div>';
    endif;
    ?>
    </li>
    <?php
    }
    } else {

    if ( !WC()->customer->get_country() )
    $no_gateways_message = __( 'Please fill in your details above to see available payment methods.', 'woocommerce' );
    else
    $no_gateways_message = __( 'Sorry, it seems that there are no available payment methods for your state. Please contact us if you require assistance or wish to make alternate arrangements.', 'woocommerce' );

    echo '<p>' . apply_filters( 'woocommerce_no_available_payment_methods_message', $no_gateways_message ) . '</p>';
    }
    ?>
    </ul>
    <?php endif; ?>

    <div class="form-row place-order">

    <noscript><?php _e( 'Since your browser does not support JavaScript, or it is disabled, please ensure you click the <em>Update Totals</em> button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'woocommerce' ); ?><br/><input type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="<?php _e( 'Update totals', 'woocommerce' ); ?>" /></noscript>

    <?php wp_nonce_field( 'woocommerce-process_checkout' ); ?>

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

    <?php
    $order_button_text = apply_filters( 'woocommerce_order_button_text', __( 'Place order', 'woocommerce' ) );

    echo apply_filters( 'woocommerce_order_button_html', '<input type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '" />' );
    ?>

    <?php
    if ( wc_get_page_id( 'terms' ) > 0 && apply_filters( 'woocommerce_checkout_show_terms', true ) ) {
    $terms_is_checked = apply_filters( 'woocommerce_terms_is_checked_default', isset( $_POST['terms'] ) );
    ?>
    <p class="form-row terms">
    <label for="terms" class="checkbox"><?php printf( __( 'I&rsquo;ve read and accept the <a href="%s" target="_blank">terms &amp; conditions</a>', 'woocommerce' ), esc_url( get_permalink( wc_get_page_id( 'terms' ) ) ) ); ?></label>
    <input type="checkbox" class="input-checkbox" name="terms" <?php checked( $terms_is_checked, true ); ?> id="terms" />
    </p>
    <?php } ?>

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

    </div>

    <div class="clear"></div>

    </div>

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

    <?php if ( !is_ajax() ) : ?></div><?php endif; ?>
     
  5. Ruckus

    Ruckus

    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
  6. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
  7. Ruckus

    Ruckus

    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Извиняюсь неправильно понял. Версия Captiva 1.3 Вроде была последняя, когда скачивал её.
     
  8. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Версия 1.3 темы Captiva - Responsive WordPress WooCommerce Theme была выпущена 14.08.2014г.
    За целый год сменилась не одна версия самого плагина WooCommerce.
    На данный момент актуальной версией темы является версия 1.8.1 от 08.10.2015г.
     
  9. dobryidesign

    dobryidesign

    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Ребята, а подскажите как осуществить такую штуку?

    Хочу поменять текст в эндпойнте при оплате через Робокассу. Суть такая, что хочу внести туда текст, что мол необходимо дождаться подтверждения менеджера по наличию и уже после этого оплатить. Не могу понять где это вообще редактируется. Сейчас у меня так, как на скриншоте.:
     

    Вложения:

  10. Mario

    Mario

    Сообщения:
    22
    Симпатии:
    7
    Баллы:
    3
    Этот текст находится внутри плагина робокасы. Там один файл, найдете.
     
  11. dobryidesign

    dobryidesign

    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    У меня еще следующие вопросы имеются. WC 2.4.7


    1. Как убрать из стандартного виджета Корзина кнопку "Перейти в корзину"?
    2. Как на странице Оплаты/Chekout убрать "Сумма в корзине" т.к общая сумма и выбор доставки будет ниже?
    3. Убрать со страницы (читай из шорткода chekout) ссылку про купон (он уже есть в корзине) ?
    4. И еще когда нажимаешь подтвердить заказ выводится сообщение с номером и соответственно снова с шорткодом корзины над этим всем. Как сделать чтобы в одном случае корзина была, а потом ее не стало?)
     

    Вложения:

    • Checkout.jpg
      Checkout.jpg
      Размер файла:
      60,7 КБ
      Просмотров:
      28
    Последнее редактирование: 22 окт 2015
  12. valerdos2109

    valerdos2109

    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Воспользовался Вашим кодом, с помощью, которого добавляются способы доставки. Получилочь вот так (см. рисунок). Подскажите, пожалуйста, как изменить код, чтобы "Способы доставки" расположились под блоками "Email-адрес" и "Телефон". А уже после доставки шли "Область" , "Населенный пункт" и т.д?
     

    Вложения:

  13. Stork.71

    Stork.71 Местный

    Сообщения:
    1.034
    Симпатии:
    254
    Баллы:
    83
    Вряд ли получится. Блок доставки (если вы его вставляли как я писал в посте #1) цепляется на стандартный хук woocommerce_after_checkout_billing_form , а разорвать стандартные billing-поля вряд ли получится. Можно попробовать в качестве альтернативы подцепить его на woocommerce_before_checkout_billing_form - тогда выбор способа доставки будет еще раньше, перед ФИО. Может так логичнее будет немного.
    Можно пойти другим путем. Добавить поля с использованием различных плагинов, для этого предназначеных. Например, я изначально изменял их с помощью Saphali WC Lite, но для Вашего случая он не подходит так как не работает с полями типа 'select' (в бесплатной версии). А вот WooCommerce Poor Guys Swiss Knife работает. Можете попробовать его.
    Тот код, которым я добавлял изначально поля был написан 100500 лет назад, тогда не было бесплатных плагинов, позволяющих это делать. Сейчас ситуация поменялась. Да и вообще я использовал стандартные методы добавления способов доставки, через стандартный функционал woocommerce, просто двигал их куда надо (подробнее тут).
     
  14. Stork.71

    Stork.71 Местный

    Сообщения:
    1.034
    Симпатии:
    254
    Баллы:
    83
    п. 3 первого сообщения.
    Редактировать файл /wp-content/plugins/woocommerce/templates/checkout/review-order.php Жалательно использовать дочернюю тему.
    Там же.
    Сходу не придумаю. Ссылку на сайт дайте. Скорее всего как-то редактировать используя endpoint'ы
     
  15. frabaaa

    frabaaa

    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Спасибо за данную тему. Очень помогла. У меня WordPress 4.3.1 с темой оформления The7.2. Большинство проблема я решил с помощью плагина WooCommerce Checkout Manager. Но у меня была проблема. Ужасно хотел удалить кнопку "Перейти к оформлению". Но нужного кода не нашел в файле cart.php. Нашел в proceed-to-checkout-button.php. Надеюсь кому-то поможет это.

    Вопрос на засыпку. Может кто знает, как убрать выпадающее меню о выборе доставки и суммы? А то, на одной странице с оплатой 2 раза не камильфо.
     

    Вложения:

  16. Stork.71

    Stork.71 Местный

    Сообщения:
    1.034
    Симпатии:
    254
    Баллы:
    83
    шаблон \templates\checkout\review-order.php, убираем кусок
    PHP:
                <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
                    <?php do_action'woocommerce_review_order_before_shipping' ); ?>
                    <?php wc_cart_totals_shipping_html(); ?>
                    <?php do_action'woocommerce_review_order_after_shipping' ); ?>
                <?php endif; ?>
    должно работать.
     
    • Нравится Нравится x 1
  17. Ariel

    Ariel

    Сообщения:
    31
    Симпатии:
    1
    Баллы:
    8
    Здравствуйте, вижу вы хорошо разбираетесь в тонкостях доставки, вас не затруднит дать ответ или хоть какие рекомендации по осуществлению замысла, в теме: http://wpcommerce.ru/threads/variacija-metodov-dostavki-oplaty.2958/
    За ранее спасибо!
     
  18. Olesya

    Olesya

    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Очень нужную информацию вы пишите, спасибо вам большое. Скажите, пожалуйста, как вы сделали в единой ставке несколько вариантов доставки? чтоб выводилось доставка по всем вариантам в заказе, как у вас на сайте .
     
  19. Stork.71

    Stork.71 Местный

    Сообщения:
    1.034
    Симпатии:
    254
    Баллы:
    83
  20. valerdos2109

    valerdos2109

    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Совместил корзину по вашей методике. На данный момент все работает. Но сегодня столкнулся с такой ситуацией. Мою корзину не видит Вебвизор. Выдает

    Невозможно воспроизвести посещение на данной странице. Возможные причины:
    • Не установлен код счётчика
    • Установлен запрет на отображение страницы во фрейме
    Скажу сразу - код счетчика установлен. Я так понимаю причина в запрете на отображение страницы во фрейме. Как ее можно решить?