2017-08-18 114 views
1

我的問題:客戶有12個地點,每個地點都是不同的公司,因此每個業務都有不同的PayPal賬戶。默認情況下,woocommerce僅支持輸入一個電子郵件來處理付款。目標是使用wordpress/woocommerce的一次安裝,然後將用戶引導到與他們在結賬時選擇的位置相關聯的PayPal賬戶。與一個Woocommerce安裝鏈接的多個PayPal賬戶

我的理論/嘗試:最初我想通過設置一個變體來實現此功能,以便用戶可以選擇一個位置,然後將一個參數傳遞給URL。該參數稍後將在PHP中用於覆蓋默認電子郵件。

我的問題:我無法覆蓋在管理設置中輸入的默認電子郵件,我似乎無法在數據庫中找到此電子郵件。我假設有關此修改的文件位於:wp-content/plugins/woocommerce/includes/gateways/paypal但是寧願使用wordpress方式編輯核心文件,原因很明顯。在做了一些研究之後,我發現下面顯示了以下操作,但是這是繼續簽出按鈕,我正在尋找與PayPal按鈕進行交互。我很流利的PHP,但不是WordPress開發最好的。我認爲這是一個很受歡迎的問題,因爲大多數特許經營商都會處理這種情況,但我對有關該主題的信息量感到不滿。如果有人能指出我征服這項任務的正確方向,將不勝感激!

remove_action('woocommerce_proceed_to_checkout','woocommerce_button_proceed_to_checkout', 20); 

add_action('woocommerce_proceed_to_checkout', 'change_url_to_checkout', 20); 

function change_url_to_checkout(){ 
     $extra_url = 'put_your_extra_page_url_here'; 
     ?> 
     <a href="<?php echo $extra_url; ?>" class="checkout-button button alt wc-forward"><?php _e('Proceed to Checkout', 'woocommerce'); ?></a> 
     <?php 
} 

回答

1

我可以在這裏看到兩個函數。

  1.在創建訂單時更改訂單數據。這是我們保存所需電子郵件的地方。

add_action('woocommerce_checkout_update_order_meta', 'woocommerce_checkout_update_order_meta'); 
function woocommerce_checkout_update_order_meta($order_id) { 
    $email = '[email protected]'; 
    // do something here as to use the right email. 
    // you have $order_id. 
    // can be used as: 
    // $order = wc_get_order($order_id); 
    // $order->get_billing_address_1() to get the address to check order address. 
    // or use $_POST['location'] if ever you posted some data. 
    update_post_meta($order_id, '_alternative_paypal_email', $email); 
} 

  2.然後使用woocommerce_paypal_args來改變正在傳遞到PayPal的ARGS。

add_filter('woocommerce_paypal_args', 'woocommerce_paypal_args', 10, 2); 
function woocommerce_paypal_args($paypal_args, $order) { 
    $email = get_post_meta($order->get_id(), '_alternative_paypal_email', true); 
    if (!empty($email)) { 
     $paypal_args['business'] = $email; 
    } 
    return $paypal_args; 
} 

總之,這只是一個例子。但是這兩個鉤子足以滿足你的需求。

+0

您在哪裏使用'_alternative_paypal_email',您是否創建了該字段?或者它存在於訂單信息中? – Shaun

相關問題