2017-01-21 1 views
1

Я пытался выяснить, как сделать работу с сайтом, работающим с сайтом, но без успеха. Я следующие настройки WooCommerce активированы:WooCommerce: Guest Checkout Not Working

  • Включить гостевой выезд
  • Включить регистрацию на «Checkout» страницы

Как правило, пользователи должны иметь возможность оформить без создания учетной записи, но могут, однако , выберите создание учетной записи, если они этого захотят. Но если я разместил тестовый заказ в качестве гостя и проверил «Создать аккаунт?» поле + заполнить поля имени пользователя и пароля, ни одна из информации, предоставленной для выставления счетов и доставки, не отображается на странице «Спасибо» или в панели инструментов WP. Это как если бы «Создать учетную запись?» поле + имя пользователя и пароль будут проигнорированы.

Я подозреваю, что это имеет какое-то отношение ко мне, изменив позицию по умолчанию для полей регистрации учетной записи. Я добавил их в файл form-login.php, чтобы он отображался в том же разделе, что и форма входа. Первоначально они были включены в поле form-billing.php. Ниже приведены эти файлы:

форм-billing.php

<?php 
/** 
* Checkout billing information form 
* 
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/form-billing.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.1.2 
*/ 

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

/** @global WC_Checkout $checkout */ 

?> 
<div id="woocommerce-billing-fields" class="woocommerce-billing-fields"> 
<h3 class="billing-fields-title">Billing Address</h3> 
    <?php 
do_action('woocommerce_before_checkout_billing_form', $checkout); 
?> 

    <?php 
foreach ($checkout->checkout_fields['billing'] as $key => $field): 
?> 

     <?php 
    woocommerce_form_field($key, $field, $checkout->get_value($key)); 
?> 

    <?php 
endforeach; 
?> 



    <?php 
do_action('woocommerce_after_checkout_billing_form', $checkout); 
?> 




</div> 

форм-login.php:

<?php wc_print_notices(); ?> 
<?php echo '<div class="panel-group" id="checkout-accordion">'; ?> 
<?php 
/** 
* Checkout login form 
* 
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/form-login.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.0.0 
*/ 

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

if (is_user_logged_in() || 'no' === get_option('woocommerce_enable_checkout_login_reminder')) { 
    return; 
} 

echo '<div class="panel panel-default checkout-panel" id="panel-login"> 
    <div class="panel-heading checkout-heading" id="panel-login-heading" data-toggle="collapse" data-parent="#checkout-accordion" href="#collapse-login"> 
     <h4 class="panel-title checkout-acc-title"> <a class="accordion-checkout">Login/Register <i id="checkout-accordion-login" class="checkout-accordion-icon">&#xe04b;</i></a> </h4> 
    </div> 
    <div id="collapse-login" class="panel-collapse details collapse in"> 
     <div class="panel-body checkout-inside"><div class="checkout-left-login"><h3 class="login-option">Login</h3>'; 
$info_message = apply_filters('woocommerce_checkout_login_message', '<div class="already-registered">' . __('Already registered?', 'woocommerce') . '</div>'); 
wc_print_notice($info_message, 'notice'); 

?> 



<?php 

woocommerce_login_form(
    array(
     'redirect' => wc_get_page_permalink('checkout'), 
     'hidden' => true, 
    ) 
); 
echo '</div>'; 

?> 


<?php 
if (!is_user_logged_in() && $checkout->enable_signup): 
?> 

     <?php 
    if ($checkout->enable_guest_checkout): 
?> 

      <p class="form-row form-row-wide create-account"> 
       <input class="input-checkbox" id="createaccount" <?php 
     checked((true === $checkout->get_value('createaccount') || (true === apply_filters('woocommerce_create_account_default_checked', false))), true); 
?> type="checkbox" name="createaccount" value="1" /> <label for="createaccount" class="checkbox"><?php 
     _e('Create an account?', 'woocommerce'); 
?></label> 
      </p> 

     <?php 
    endif; 
?> 

     <?php 
    do_action('woocommerce_before_checkout_registration_form', $checkout); 
?> 

     <?php 
    if (!empty($checkout->checkout_fields['account'])): 
?> 

<div class="checkout-right-register"> 
<h3 class="login-option">Create an Account</h3> 
      <div class="create-account"> 




       <?php 
     foreach ($checkout->checkout_fields['account'] as $key => $field): 
?> 

        <?php 
      woocommerce_form_field($key, $field, $checkout->get_value($key)); 
?> 

       <?php 
     endforeach; 
?> 

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

      </div> 



<?php 
    endif; 
?> 

     <?php 
    do_action('woocommerce_after_checkout_registration_form', $checkout); 
?> 

    <?php 
endif; 
?> 




<button id="toggle-login" type="button" class="register-btn-checkout" data-toggle="collapse" onclick="setCookie('panel-billing')" data-parent="#checkout-accordion" href="#collapse-billing">Continue</button> 


</div><div class="or-select-guest">OR</div><button id="toggle-login2" type="button" class="guest-btn-checkout" data-toggle="collapse" data-parent="#checkout-accordion" href="#collapse-billing" onclick="setCookie('panel-billing')">Checkout as Guest</button> 

<?php echo'</div></div></div>'; 

?> 

В качестве примечания: вся форма проверки будет аккордеона, с разделы для доставки + выставление счетов, варианты доставки и оплата.

Я ничего не пропустил? Я подозреваю, что проблема может быть связана с действиями Woocommerce, но я не могу точно сказать.

ответ

1

Вы используете Woocommerce Subscriptions любым способом? Я спрашиваю, потому что у меня была аналогичная проблема, и, наконец, понял, что гостевая проверка действительно работает на любой продукт, кроме продуктов подписки. Мне пришлось тестировать страницу проверки с продуктом подписки в моей корзине ... Так как покупка продукта подписки назначает роль пользователя, в одном из них в корзине потребуется учетная запись при оформлении заказа.

Это может не помочь вашей конкретной ситуации, но, возможно, это поможет кому-то еще найти ответы.