標籤: WooCommerce, 使用者登入
-
作者帖子
-
我目前的網站不是 woocomerce 製作的, 現在想透過 使用者到 woocomerce 網站上 登入, 來進行資料轉移.
就是: 我會把老客戶的郵箱都導到 woocomerce 的 wp-users 表裡, 然後 password 統一隨便設定, 一旦這些使用者登入, 只要被判斷是老客戶, 並且密碼有 統一設定的那個, 那麼就會更新它的密碼.
從而實現賬戶轉移的功能.
我在觀察 wordpress 的原始碼時, 遇到困難.
function authenticate 此函式 根本不進行 密碼驗證.
哪個大神給個提醒.
路徑是這個:
/wp-content/plugins/woocommerce/templates/myaccount
檔案是這個:
wp-users 是 WordPress 的使用者表,使用者表和 woocommerce 通用,你要想這麼操作我覺得太麻煩了,還不如直接先全部匯入使用者,然後再透過 WordPress 傳送郵件,強制修改密碼來的簡單的多,一般我們如果是要做大批次的使用者轉移的話就是這麼操作的。
我開始問的那個有點含糊, 所以我附圖了這次, 其實我是想知道
pluggable.php 裡 運用的 呼叫 authenticate 的函式, 如何進去密碼驗證的, 但是 上面找到所有關於 function authenticate 的函式都沒有進行密碼判斷, 我非常的不解.
詩語, 我以前 另外一個網站也是透過你的這種方法弄的, 但是還是流失了很多客戶, 所以這次 我想換種方式就是上面提到的方法.
這次我反著走, 找到了 wordpress 專門用於判斷密碼的函式 , function wp_check_password($password, $hash, $user_id = ”)
如果我有突破, 也會馬上更新在這裡, 謝謝你的幫助.
最終效果就是 第一次登入 雖然錯誤, 但改變了資料庫的密碼, 但第二次用同樣的密碼 就能登入.
麻煩的地方就是需要把資料庫裡的密碼 統一改成 “anythinguwant” . 用 sql 的寫一條語句的話也算是比較快了
function wp_check_password($password, $hash, $user_id = 」) { global $wp_hasher; // If the hash is still md5… if ( strlen($hash) <= 32 & $hash != 「anythinguwant」) { $check = hash_equals( $hash, md5( $password ) ); if ( $check && $user_id ) { // Rehash using new hash. wp_set_password($password, $user_id); $hash = wp_hash_password($password); } /** * Filters whether the plaintext password matches the encrypted password. * * @since 2.5.0 * * @param bool $check Whether the passwords match. * @param string $password The plaintext password. * @param string $hash The hashed password. * @param string|int $user_id User ID. Can be empty. */ return apply_filters( 『check_password』, $check, $password, $hash, $user_id ); }else if(strlen($hash) <= 32 & $hash == 「anythinguwant」){ if ( $user_id ) { // Rehash using new hash. wp_set_password($password, $user_id); $hash = wp_hash_password($password); } return apply_filters( 『check_password』, $check, $password, $hash, $user_id ); }
其實我換個角度來說下啊,如果是直接這樣的話,也還會導致一個問題,就是使用者不經意輸入錯誤了密碼那麼儲存了,這次是登入了那下次就登入不了。
一般如果是大型站點要做使用者轉移的話,建議的方式是透過 SSO 單點登入的方式來實現使用者的資料同步和過度。
比如拿我們自己的站點來舉例,feibisi.com 是舊站已經很多使用者資料了,但我們需要將使用者匯入到 weixiaoduo.com 這個新網站來,
那麼不應該是說進行資料庫的匯入匯出以及合併,而是要讓使用者有選擇性的去從舊的 feibisi.com 登入到 weixiaoduo.com ,這樣的話,就能夠實現讓使用者過渡到新站和實現信任度的轉移。簡單講就是給舊站和新站都新增個 【一鍵登入按鈕】 。
WordPress 的 SSO 單點登入方案也非常多,這個只是我們實際上操作過的方式,算是給個建議。
使用者不經意輸入錯誤了密碼那麼儲存了,這次是登入了那下次就登入不了.
我也考慮過 那個問題, 至少第二次他可以用忘記密碼.. 其實我上面更大的問題在於 “ 第一次是登入失敗, 第一次和第二次輸入不一樣, 第一次登入 都進入不了, 才是我最不想見到的. 不過目前我還未知道 如何修改能使第一次登入 成功, 而不是第二次.
SSO 單點登入的方式, 我會好好研究下. 主要問題是原網站由 netsuite 做出來的. 密碼的資料是提取不出來的.
因為我的目標是換系統, netsuite 改成 woocomerce. 網址最終都將還是 同一個.
第一次聽說這個系統,我找了下,確實是有整合方案的,你看下
https://in8sync.com/netsuite-wordpress-woocommerce-plugins/
https://www.appypie.com/connect/integration/wordpress/netsuite/
https://wordpress.org/support/topic/wp-ecommerce-integration-with-netsuite/
https://wenpai.org/plugins/easyevent/
單點登入的方案:
https://stackoverflow.com/questions/26289660/netsuite-single-sign-on-with-wordpress-website
有點晚了,你先看看,抽空再熟悉下這款系統。
嗯 .. 我聯絡過 其中幾個.. 當我問他們 怎麼使用者解決資料同步的時候.
他們的方案 就是我上面要做的那樣.. 所以我才走了這條路線.
非常感管理員..
-
作者帖子
- 哎呀,回覆話題必需登入。