2017-10-12 151 views
0

在WordPress中,我有新用戶的自定義註冊網站。註冊後,會有一個可選的複選框來訂閱我們的通訊。據我瞭解,它增加了複選框的價值user_meta表(整個事情已由印度的一家公司編碼,我非常希望不再涉及,因爲他們延誤了他們的工作時間和時間畢竟並沒有做好工作)。WordPress的:在註冊通知中輸出自定義user_meta數據

在我的子主題的functions.php中相應的代碼片段看起來是這樣的:

<?php echo '<div class="form-row form-row-wide"> 
<input type="checkbox" name="inter_offers" value="yes"> '; _e('I would like to subscribe to the Kurth Electronic newsletter.','kurth-child'); echo '<br></div>'; 
return $fields; ?> 

add_action('woocommerce_created_customer','adding_extra_reg_fields');  
function adding_extra_reg_fields($user_id) { 
extract($_POST); 
update_user_meta($user_id, 'billing_inter_offers',$inter_offers); 
} ?> 

(我已經離開了線無關這個問題。)

現在,這個值在內部保存,但沒有顯示給我。我希望在用戶完成註冊時顯示由WordPress生成的電子郵件或通知中的值,以便我們可以在有人選擇訂閱新聞通訊時手動將其添加到我們的新聞通訊列表中。問題是我對PHP只有有限的知識,我不知道從哪裏開始。

我還應該注意,這不是通過標準的WorPress註冊表單,而是通過WooCommerce註冊表單(由於安全原因已禁用標準WordPress註冊)。

我試圖在新用戶完成註冊時使用「更好通知」插件(https://wordpress.org/plugins/bnfw/)進行自定義通知,但它會忽略任何添加到自定義通知主體以顯示user_meta數據的php代碼。

任何幫助,將不勝感激。

回答

0

由於註冊是通過woocomerce完成的,您可能需要尋找一個可與woocomerce一起使用的通知PlugIN,您擁有的通知可能只適用於wordpress核心版本!

你也可以在函數中通過php生成一個郵件,這樣你就可以得到一個帶有用戶郵件地址的消息,但是我認爲沒有php知識,使用內置的PHP郵件程序並不那麼容易......(您可能需要一個API!)

但是,將它們自動簽名到您的通訊軟件不是更好嗎?例如對於Mailchimp或其他類似的系統,有相當不錯的WordPress插件!

您也可以在您的註冊表格中包含這些插件的形式,但沒有仔細看看這個woocomerce註冊,我無法確定!

+0

我能夠在通過插件生成的自定義通知中輸出默認用戶數據,所以它應該可以工作。我在插件中遇到的問題是它不接受自定義php代碼來輸出自定義user_meta字段的數據。 在function.php中生成郵件是一個好主意 - 你推薦某個教程或資源嗎?如果這對我來說太複雜了,我仍然可以決定。 ;) 至於電子郵件軟件,我們使用一個不真正與其他系統一起工作的軟件。我們必須手動輸入新數據。 –

+0

我改正了自己,它似乎很容易通過使用郵件功能...我重新編寫了一個案例,我不得不生成一個html郵件,並且發現它可能會很複雜地設置郵件內容,所以我使用了一個小的api爲我解析郵件...... 但是在這種情況下,您只需要用戶郵件作爲內容如果自定義字段被檢查,所以它應該沒有問題,看看這裏: https://www.w3schools.com/php/func_mail_mail.asp 如果你遇到問題,只是谷歌「PHP郵件程序「,api可以幫助你,你會發現很多教程! – ToTaTaRi

0

我認爲這樣做會訣竅,它會在每次創建新用戶時通知您,並且還會告訴您他們是否訂閱了。

function new_customer_registered_send_email_admin($user_login, $user_email) { 
    ob_start(); 
    do_action('woocommerce_email_header', 'New customer registered'); 
    $email_header = ob_get_clean(); 
    ob_start(); 
    do_action('woocommerce_email_footer'); 
    $email_footer = ob_get_clean(); 

    $user = get_user_by('email', $user_email); 
    $subscribed = get_user_meta($user->ID, 'billing_inter_offers', true); 

    woocommerce_mail(
     get_bloginfo('admin_email'), 
     get_bloginfo('name').' - New customer registered', 
     $email_header.'<p>The user '.esc_html($user_login).' created an account ' . ($subscribed ? ' and subscribed to the newsletter.' : '.') . '<br>Email:'.esc_html($user_email).'</p>'.$email_footer 
    ); 
} 

add_action('new_customer_registered', 'new_customer_registered_send_email_admin', 10, 2); 
+0

謝謝你的代碼!不幸的是,它似乎並沒有在註冊測試用戶時執行。沒有發送電子郵件並且調試日誌文件不顯示與這些代碼行相關的錯誤。我將代碼放在原始文章中提到的代碼之後 - 也許我必須把它放在其他地方? –

+0

代碼是否執行?在代碼中嵌入一條日誌語句以確保它正在執行error_log('代碼正在執行');現在也註釋掉舊的代碼操作。 –

+0

我已經嘗試添加代碼,但它沒有做任何事情(日誌文件中沒有新條目),或者由於語法錯誤而破壞了網站。我應該把它放在哪裏? –