2016-04-25 7 views
1

私はいくつかのカスタムデータをWooCommerceの注文に追加するプラグインを構築しようとしています。

私は、URL変数(& my_post_var = {INTEGER})が設定されているカスタムボタンから、基本的に特定の製品ページをロードしています。このvarは、製品ページで処理され、WordPressで利用可能な特定の情報が表示され、意図したとおりに動作します。

ここから、カートに追加を押すと、カスタムデータの一部がカートセッションにプッシュされます。 AJAX jQueryとPHPコールバックは正しく実行され、jQueryレスポンスもPHP $ _SESSION変数を使用して正しく設定されます。

問題は、データが表示されたカートページが表示され、& my_post_var = {INTEGER}、渡されなかった最後の値から1である場合、それ以降です。

私はキャッシュプラグインを使用していません。これは、ローカル開発用ワードプレスインストールです。

ここで何が間違っているのかを特定するのに助けてくれる人がいますか?

この

はおそらく、より適切であるコードの一部です:

function __construct() { 

    // AJAX callback  
    function my_ajax_custom_data_callback_inline() { 
     session_start(); 
     print_r ($_POST); 

     write_log ('Data inside AJAX callback: '); 
     write_log (' - DEBUG: _POST data: '. $_POST['my_post_data'][0]); // This outputs the expected value 

     $_SESSION['my_meta_data'] = $_POST['my_post_data']; 
     print_r ($_SESSION); 

     write_log (' - DEBUG: _SESSION DATA: ' . $_SESSION['my_meta_data'][0]); // This outputs the expected value 

     wp_die(); 
    } 

    // AJAX hooks 
    add_action('wp_ajax_' . 'my_custom_data', 'my_ajax_custom_data_callback_inline', 1); 
    add_action('wp_ajax_nopriv_' . 'my_custom_data', 'my_ajax_custom_data_callback_inline', 1); 


    if (isset($_SESSION['my_meta_data'])) { // this is not being verified as TRUE 

     add_filter('woocommerce_add_cart_item_data', 'my_add_cart_item_data', 10, 2); 

     add_filter('woocommerce_get_cart_item_from_session', 'my_get_cart_items_from_session', 10, 3); 

     add_filter('woocommerce_get_item_data', 'my_get_item_data', 10, 2); 

     add_action('woocommerce_add_order_item_meta', 'my_add_values_to_order_item_meta',10,2); 

     add_action('woocommerce_before_cart_item_quantity_zero', 'my_remove_user_custom_data',10,1); 

    } 

} 

はどうもありがとうございまし

答えて

0

私はそれは不安定な私を判明した場合、これをソートする方法を見つけたと思います質問に戻るでしょう。

基本的に私は2つの異なるのsession_start()呼び出し、AJAXコールバック内の一方(OPに見られるように)、および他のwoocommerce_add_cart_item_dataフィルタ関数内を作りました。

は、両方のこれらの呼び出しを取り除き、右 __construct()開始した後、単一の呼び出しによってそれらを交換することはこれですべての重要な注意点がある場合、私は知らないにもかかわらず、それが必要として、それが仕事になりましょう。

関連する問題