2016-09-08 21 views
0

最後にWooCommerceを更新した後、注文の詳細は[ありがとうございました]ページに表示されなくなりました。それ以来、私はWooCommerce Storefrontテーマを使って子テーマを開発しました。私が何を試しても、あなたが感謝のページに「ありがとう」というメッセージが表示されます。WooCommerce Storefrontのテーマ:受注したエンドポイントの注文の詳細を表示するにはどうすればいいですか?

  • は間違っているかもしれない何かを見つけるために、全体のプロセスのトラブルシューティング:私がこれまで試してみました何

  • ため、詳細テンプレートを呼び出すWCテンプレート関数のためにチェックし、それは、関連するアクションフック(両方存在する)
  • 私の子供-テーマのWooCommerceディレクトリが正しく構成されたことを確認作る: は、この次が含まれています。私のカスタムテンプレートの断片やフックなど、他のすべてが正しく動作します。
  • 黙って失敗する可能性のある構文エラーなど、構文エラーには十分注意してください。
  • プラグインのWooCommerceディレクトリを子テーマにコピーしました。これにより、同じ正確な結果が得られました。
  • 削除されたWordPressありがとうございましたページと既定のWooCommerceエンドポイント( '受注')を使用しました。注:この影響を受けたレイアウトと表示方法のため、元のWooCommerceディレクトリ構造(WooCommerceテンプレートディレクトリと同じですが、一部のサブディレクトリを除く)に戻りました。 (更新:私はまだ実際にはコピーされたWooCommerceディレクトリを使用しています)
  • 子テーマのfunctions.phpファイルにアクションフックを付けて出力を変更せずにカスタム関数を書きました。 thankyou.phpで
  • 、更新4.5から4.6.1へ
  • 更新ワードプレス、(サイレントが失敗)アクションフックを作成し、オーダーの詳細を呼び出すためにwc_get_templateを使用する関数を書いたが、それは動作しませんでしたStorefrontテーマ、および私の子供のテーマの古いWooCommerceテンプレートファイルを更新しました。

    Code: 
    **storefront-child/woocommerce/wc-template-functions.php** 
    
    if (! function_exists('woocommerce_order_details_table')) { 
    
        /** 
        * Displays order details in a table. 
        * 
        * @param mixed $order_id 
        * @subpackage Orders 
        */ 
        function woocommerce_order_details_table($order_id) { 
         if (! $order_id) return; 
    
         wc_get_template('order/order-details.php', array(
          'order_id' => $order_id 
         )); 
        } 
    } 
    
    
    
    **storefront-child/woocommerce/wc-template-hooks.php 
    
    /** 
    * Order details. 
    * 
    * @see woocommerce_order_details_table() 
    * @see woocommerce_order_again_button() 
    */ 
    add_action('woocommerce_view_order', 'woocommerce_order_details_table', 10); 
    add_action('woocommerce_thankyou', 'woocommerce_order_details_table', 10); 
    add_action('woocommerce_order_details_after_order_table', 'woocommerce_order_again_button'); 
    
    
    
    **storefront-child/woocommerce/checkout/thankyou.php** 
    
    if (! defined('ABSPATH')) { 
        exit; 
    } 
    
    if ($order) : ?> 
    
        <?php if ($order->has_status('failed')) : ?> 
    
        <p class="woocommerce-thankyou-order-failed"><?php _e('Unfortunately your order cannot be processed as the originating bank/merchant has declined your transaction. Please attempt your purchase again.', 'woocommerce'); ?></p> 
    
        <p class="woocommerce-thankyou-order-failed-actions"> 
         <a href="<?php echo esc_url($order->get_checkout_payment_url()); ?>" class="button pay"><?php _e('Pay', 'woocommerce') ?></a> 
         <?php if (is_user_logged_in()) : ?> 
          <a href="<?php echo esc_url(wc_get_page_permalink('myaccount')); ?>" class="button pay"><?php _e('My Account', 'woocommerce'); ?></a> 
         <?php endif; ?> 
        </p> 
    
    <?php else : ?> 
    
        <p class="woocommerce-thankyou-order-received"><?php echo apply_filters('woocommerce_thankyou_order_received_text', __('Thank you. Your order has been received.', 'woocommerce'), $order); ?></p> 
    
        <ul class="woocommerce-thankyou-order-details order_details"> 
         <li class="order"> 
          <?php _e('Order Number:', 'woocommerce'); ?> 
          <strong><?php echo $order->get_order_number(); ?></strong> 
         </li> 
         <li class="date"> 
          <?php _e('Date:', 'woocommerce'); ?> 
          <strong><?php echo date_i18n(get_option('date_format'), strtotime($order->order_date)); ?></strong> 
         </li> 
         <li class="total"> 
          <?php _e('Total:', 'woocommerce'); ?> 
          <strong><?php echo $order->get_formatted_order_total(); ?></strong> 
         </li> 
         <?php if ($order->payment_method_title) : ?> 
         <li class="method"> 
          <?php _e('Payment Method:', 'woocommerce'); ?> 
          <strong><?php echo $order->payment_method_title; ?></strong> 
         </li> 
         <?php endif; ?> 
        </ul> 
        <div class="clear"></div> 
    
    <?php endif; ?> 
    
    <?php do_action('woocommerce_thankyou_' . $order->payment_method, $order->id); ?> 
    <?php do_action('woocommerce_thankyou', $order->id); ?> 
    
    <p class="woocommerce-thankyou-order-received"><?php echo apply_filters('woocommerce_thankyou_order_received_text', __('Thank you. Your order has been received.', 'woocommerce'), null); ?></p> 
    
    <?php endif; 
    
    ?> 
    
    
    **storefront-child/woocommerce/order/order-details.php** 
    
    if (! defined('ABSPATH')) { 
        exit; 
    } 
    
    $order = wc_get_order($order_id); 
    
    $show_purchase_note = $order->has_status(apply_filters('woocommerce_purchase_note_order_statuses', array('completed', 'processing'))); 
    $show_customer_details = is_user_logged_in() && $order->get_user_id() === get_current_user_id(); 
    ?> 
    <h2><?php _e('Order Details', 'woocommerce'); ?></h2> 
    <table class="shop_table order_details"> 
        <thead> 
         <tr> 
          <th class="product-name"><?php _e('Product', 'woocommerce'); ?></th> 
          <th class="product-total"><?php _e('Total', 'woocommerce'); ?></th> 
         </tr> 
        </thead> 
        <tbody> 
        <?php 
         foreach($order->get_items() as $item_id => $item) { 
          $product = apply_filters('woocommerce_order_item_product', $order->get_product_from_item($item), $item); 
    
          wc_get_template('order/order-details-item.php', array(
           'order'    => $order, 
           'item_id'   => $item_id, 
           'item'    => $item, 
           'show_purchase_note' => $show_purchase_note, 
           'purchase_note'  => $product ? get_post_meta($product->id, '_purchase_note', true) : '', 
           'product'   => $product, 
          )); 
         } 
        ?> 
        <?php do_action('woocommerce_order_items_table', $order); ?> 
    </tbody> 
    <tfoot> 
        <?php 
         foreach ($order->get_order_item_totals() as $key => $total) { 
          ?> 
          <tr> 
           <th scope="row"><?php echo $total['label']; ?></th> 
           <td><?php echo $total['value']; ?></td> 
          </tr> 
          <?php 
         } 
        ?> 
    </tfoot> 
    

    <?php if ($show_customer_details) : ?> 
        <?php wc_get_template('order/order-details-customer.php', array('order' => $order)); ?> 
    <?php endif; ?> 
    
    
    
    **Rendered HTML** 
    <div class="entry-content"> 
        <div class="mailmunch-forms-before-post" style="display: none !important;"></div> 
    <div class="woocommerce"> 
        <p class="woocommerce-thankyou-order-received">Thank you. Your order has been received.</p>  
    </div> 
    
    <!-- This is where the order details should be --> 
    
    <p>&nbsp;</p> 
    
    <div class="mailmunch-forms-in-post-middle" style="display: none !important;"></div> 
    <div class="mailmunch-forms-after-post" style="display: none !important;"></div> 
    
    </div> 
    

私はここで何かをしないのですかWooCommerceで起こって何かがあるのでしょうか?どんな助けでも大歓迎です:)

更新:v1.11.3とv1.12.4の2つのバージョンのjQueryを実行しています。 jQueryUIのロードには、v1.10.4とv1.11.4という2つの異なるバージョンがあります。現在、WordPressプラグインを無効にし、jqueryのバージョンがブラウザにロードされていることに注目してください。

更新:jQueryUI v1.10.4を使用して1つのプラグインが見つかりました。まだ他の人を探しています。

更新:WooCommerce(WSOD)を除くすべてのプラグインの問題を解決しました。 Spider Playerが古いバージョンのjQueryUIを呼び出している間、MailChimp MailMunchプラグインは古いjqueryバージョン(v1.11.3)へのgoogle api呼び出しを作成していました。両方のプラグインを無効にして、同じ結果を返します。 WooCommerceがthankyou.phpテンプレートの途中で注文の詳細を単に無視しているかのようです。

ご意見やご提案はありますか?私は本当に今失っている。私は、無効にされたプラグインでjqueryの問題を修正することができますが、それはありがとうございますページで私の緊急の問題を解決しません。

任意の助けいただければ幸いです:)

UPDATE:より多くの仕事の後、私はWooCommerce子テーマthankyou.phpを使用していると判断しているが。さらなるトラブルシューティングでは、$ が偽であることが明らかになりました。これは、私があなたに感謝のページで注文の詳細を見ていない理由です。次は$ orderがfalseの理由を示します(WC_Orderのインスタンスです)。 ... WC_Shortcode_Checkout :: order_received(NULL):

UPDATE: I did a stacktrace: 

#0 /home/onyour6test/www/wp-content/plugins/woocommerce/includes/wc-core-functions.php(203): include() 

#1 /home/onyour6test/www/wp-content/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php(212): wc_get_template('checkout/thanky...', Array) 

#2 /home/onyour6test/www/wp-content/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php(59): WC_Shortcode_Checkout::order_received(NULL) 

#3 /home/onyour6test/www/wp-content/plugins/woocommerce/includes/class-wc-shortcodes.php(71): WC_Shortcode_Checkout::output('') 

#4 /home/onyour6test/www/wp-content/plugins/woocommerce/includes/class-wc-shortcodes.php(138): WC_Shortcodes::shortcode_wrapper(Array, '') 

#5 /home/onyour6test/www/wp-includes/shortcodes.php(326): WC_Shortcodes::checkout('', '', 'woocommerce_che...') 

#6 [internal function]: do_shortcode_tag(Arr in /home/onyour6test/www/wp-content/themes/storefront-child/woocommerce/checkout/thankyou.php on line 77 

私は犯人がスタックトレース#2であってもよいと思います。

Stacktrace#6がこれを確認しているようです。do_shortcode_tagライン77は、具体的には、ここで、$順番に呼び出しが失敗した場所を参照します。

<strong><? php _e('Order Number:', 'woocommerce'); ?></strong> 

は、私が表示するコードのこの特定の行を取得するために管理し、それは「注文番号」で唯一の「注文」を示したが、続きます500内部サーバーエラー。ページに表示される残りのHTMLまたは注文明細変数の残りの部分はありません。

更新:これはWooCommerceコードそのもののようです。 $ order_idは空で、$ orderはNULLを返します。これにより、注文の詳細が表示されなくなります。これはデフォルトで表示され、WooCommerceの設定でそれを無効にするオプションが表示されます。

+0

テンプレートを無効にすると、ディスプレイは正しく動作しますか?テンプレートを一時的に無効にするには、WooCommerce設定でテンプレートデバッグモードを有効にします。その場合は、新しいコアテンプレートと一致するようにテンプレートを更新し、変更内容を再作成する必要があります。 – helgatheviking

+0

私は同じ結果をもって親テーマのみでこれを試しました。 Twentysixteenのテーマでさえ同じことをしました。しかし、私は昨日すべてのものを更新して以来、私は親のテーマをもう一度試していきます。古い子供向けテーマのwoocommerceテンプレートを含めて。 –

+0

UPDATE:親テーマ(Storefront)に切り替えて、同じ結果を得ました - メッセージありがとうございますが、注文の詳細はありません。 –

答えて

0

問題は、顧客がログインしていない場合order/order-details.php$show_customer_detailsfalseに設定されている。

私はまた、注文キー(ポストかどうかを確認するため、details.phpの私のテーマコピーに顧客のチェックを修正パスワード)は、URLパラメータとして提供されるキーと一致します。

$order_key    = apply_filters('woocommerce_thankyou_order_key', empty($_GET['key']) ? '' : wc_clean($_GET['key'])); 
$show_customer_details = $order_key == $order->get_order_key() || (is_user_logged_in() && $order->get_user_id() === get_current_user_id()); 

それはきれいではありませんが、それは動作します。これは、お礼にあなたのページを順序情報を表示しても大丈夫ですかどうかを作業するときWooCommerceが実行するのと同じチェックです。

関連する問題