2016-05-27 6 views
1

今日私はこの問題を抱えています。私は自分のウェブサイトの管理者がユーザーアカウントを管理するのに役立つ少しのプラグインを作っています。wordpress:同じ機能でinsert_user()とwp_mailを使用する

私はかなりうまくいっていますが、新しいユーザー(insert_userを使用してカスタムフォームを作成)を作成してこのユーザーに通知メールを送信することはできません(wp_mailを使用したカスタムhtmlメール)。 。ここで

は私のJSのAJAX機能である:ここで私が思う言うために特別

$(document).on('click','.nc_submit',function(){ 
    var ajaxurladmin = $('#urladminajax').val(); 

    var doc = $('.doc_holder .doc_input').val(); 
    var pass = $('.nc_pass').val(); 
    var name = $('.nc_name').val(); 
    var surname = $('.nc_surname').val(); 
    var email = $('.nc_email').val(); 
    var login = $('.nc_login').val(); 
    var client_type = $('.nc_client_type').val(); 
    var nicename = login.replace(' ','-'); 
    var display_name = name+' '+surname; 
    var expiry_date = $('.nc_expiry').val(); 

    var today = new Date(); 
    var day = today.getDate(); 
    var month = today.getMonth()+1; 
    var year = today.getFullYear(); 

    if(expiry_date == 'never'){ 
     var expiry = 'never'; 
    }else{ 
     if(expiry_date == 'year'){ 
      year++; 
     }else if(expiry_date == 'month'){ 
      month++; 
     } 
     var expiry = day+'-'+month+'-'+year; 
    } 

    var str_taken_logins = $('.all_users').val(); 
    var taken_logins = str_taken_logins.split(','); 

    the_message = $('.nc_message'); 
    the_loader = $('.nc_loading_cl'); 

    if($.inArray(login,taken_logins) >= 0){ 
     $('.login_exists').html('Ce login est déjà utilisé').animate({opacity:'1',width:'184px'},300).delay(2000).animate({opacity:'0',width:'0'},300); 
    }else if(email == '' || login == '' || surname == ''){ 
     $('.login_exists').html('Un ou plusieurs champs requis ne sont pas remplis').animate({opacity:'1',width:'360px'},300).delay(2000).animate({opacity:'0',width:'0'},300); 
    }else{ 
     the_loader.addClass('in_load'); 

     $.ajax({ 
     type: "POST", 
     url: ajaxurladmin, 
     data: { 
      "action": "dbaddclient", 
      "display_name":display_name, 
      "nicename":nicename, 
      "email":email, 
      "login":login, 
      "client_type":client_type, 
      "pass":pass, 
      "doc":doc, 
      "expiry":expiry 
     } 
     }).done(function(msg){ 
      if(msg == 'update'){ 
       the_loader.removeClass('in_load'); 
       the_message.animate({opacity:'1',width:'135px'},300).delay(2000).animate({opacity:'0',width:'0'},300); 

       location.reload(); 
      } 
     }); 
    } 
}); 

何も、それが正常に動作します。

今私のPHP:私のar_mail.phpファイル内

function dbaddclient(){ 
    $display_name = $_POST["display_name"]; 
    $nicename = $_POST["nicename"]; 
    $email = $_POST["email"]; 
    $login = $_POST["login"]; 
    $client_type = $_POST["client_type"]; 
    $pass = $_POST["pass"]; 
    $doc = $_POST["doc"]; 
    $expiry = $_POST["expiry"]; 
    $userdata = array(
     'user_login' => $login, 
     'user_nicename' => $nicename, 
     'display_name' => $display_name, 
     'user_pass' => $pass, 
     'user_email' => $email, 
     'role'   => 'Client' 
    ); 
    global $wpdb; 

    wp_insert_user($userdata); 

    $wpdb->update('ar_users', array('client_type' => $client_type, 'clients_doc' => $doc, 'client_expiry' => $expiry), array('user_login' => $login)); 

    include('ar_mail.php'); 

    echo 'update';die; 
} 
add_action('wp_ajax_dbaddclient', 'dbaddclient'); 
add_action('wp_ajax_nopriv_dbaddclient', 'dbaddclient'); 

そして最後に、私のwp_mail機能:

<?php 

add_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

wp_mail($email,'Sender','<p>Bonjour '.$display_name.',</p><p>Votre compte ... a été activé.</p><p>Votre Login est : '.$login.'</p><p>Votre Mot de passe est : '.$pass.'</p>'); 

remove_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

function wpdocs_set_html_mail_content_type() { 
    return 'text/html'; 
} 
?> 

は何が起こることは、私は、ユーザーを作成するときに、メールが正しく送信されていることです(、私の迷惑メールボックスに入りますが、解決策があれば)、 でもユーザーはもう登録されていませんそれ)。

「include( 'ar_mail.php');」を削除しようとしました。私のユーザーの作成は正常に動作します...

私はこれをどのようにして得ることができるか知っていますか?私は本当にうれしいでしょう!

EDIT: 私はここで、問題を発見し、私は最初からやるべきです:

<?php 

add_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

$message = '<p>Bonjour '.$display_name.',</p><p>Votre compte ... a été activé.</p><p>Votre Login est : '.$login.'</p><p>Votre Mot de passe est : '.$pass.'</p>'; 

wp_mail($email,'Sender',$message); 

remove_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

function wpdocs_set_html_mail_content_type() { 
    return 'text/html'; 
} 
?> 

単にHTMLコードを変数としてwp_mailに渡されていることを確認します。

+0

[OK]を、あなたは解決策を見つけた場合は、との答えを追加 – ken

+0

)ちょうど私のhtmlコードの変数を作成し、(wp_mailでそれを呼び出す必要がありました...問題を発見し、それは非常に愚かですそれ以外の場合は質問を削除してください。 – Milap

答えて

0

簡単な答え:html本文を変数に入れてからwp_mail()に渡す必要があります。このよう

<?php 

add_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

$message = '<p>Bonjour '.$display_name.',</p><p>Votre compte ... a été activé.</p><p>Votre Login est : '.$login.'</p><p>Votre Mot de passe est : '.$pass.'</p>'; 

wp_mail($email,'Sender',$message); 

remove_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

function wpdocs_set_html_mail_content_type() { 
return 'text/html'; 
} 
?> 
関連する問題