카테고리 변경시 이메일 알림

안녕하세요, 덕분에 버튼 생성해서 카테고리 변경으로 잘 만들었습니다.

그런데 아직 관리자에게 이메일이 안옵니다.

코드 확인좀 부탁드립니다.

add_action('kboard_document_update', 'my_admin_category_email_alert', 10, 2);
function my_admin_category_email_alert($content_uid, $board_id){
          $document = new KBContent();
          $document->initWithUID($content_uid);
        
    
    if(!class_exists('KBMail')){
        include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    }
    $url = new KBUrl();
    $mail = new KBMail();
    $mail->to = get_option('admin_email');
    $mail->title = "신청 의뢰왔습니다.";
    $mail->content = $content->content;
    $mail->url = $url->getDocumentRedirect($content->uid);
    $mail->url_name = '페이지로 이동';
    $mail->send();    
}

 

button 생성 function script는

<script>
function kboard_new_category_update(content_uid, new_category){
    kboard_content_update(content_uid, {category2:new_category}, function(res){
        if(res.result == 'success'){
            alert('신청 완료되었습니다.');
        }
        else{
            alert(res.message);
        }
    });
}
</script>

 

이렇게 했습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    본문에 프로그램 코드를 올려야 할 경우 에디터의 "코드 스니펫 삽입" 기능을 사용해주시길 부탁드립니다.

     

    코드상에 에러가 있는 듯합니다.

    아래 코드로 사용해보시겠어요?

    add_action('kboard_document_update', 'my_admin_category_email_alert', 10, 2);
    function my_admin_category_email_alert($content_uid, $board_id){
    	$document = new KBContent();
    	$document->initWithUID($content_uid);
    	
    	if(!class_exists('KBMail')){
    		include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    	}
    	$url = new KBUrl();
    	$mail = new KBMail();
    	$mail->to = get_option('admin_email');
    	$mail->title = "신청 의뢰왔습니다.";
    	$mail->content = $content->content;
    	$mail->url = $url->getDocumentRedirect($document->uid);
    	$mail->url_name = '페이지로 이동';
    	$mail->send();
    }

    $mail->url = $url->getDocumentRedirect($document->uid); 이 코드로 변경되었습니다.

    고맙습니다.

  • 아직 메일이 오지 않는데 무엇이 문제 인지 모르겠습니다.

    list.php엔

    <button type="button" onclick="kboard_new_category_update('<?php echo $content->uid?>', '신청 Info')">신청</button>

    <script>
    function kboard_new_category_update(content_uid, new_category){
        kboard_content_update(content_uid, {category2:new_category}, function(res){
            if(res.result == 'success'){
                alert('신청 완료되었습니다.');
            }
            else{
                alert(res.message);
            }
        });
    }
    </script>

     

    이렇게 하고 functions.php 엔 알려주신대로 했습니다.

  • 안녕하세요~^^

    받는 쪽 이메일의 스팸함에도 없는지요?

    WP Mail SMTP 플러그인을 사용해서 네이버 메일, 구글 지메일 등으로 세팅해서

    호스팅 서버에서 메일을 보내는 게 아닌 신뢰 높은 메일 서비스에서 보내도록 하시면 전송 실패 확률을 낮출 수 있을 듯합니다.

     

    만약 위의 방법으로도 해결되지 않는다면

    이메일 보내는 기능은 엄밀히 말하면 서버 기능이기 때문에 호스팅 쪽에 문의를 해보셔야 할 듯합니다.

    메일이 도착하지 않는다고 문의를 해보세요.

    고맙습니다.

  • 안녕하세요, WP Mail SMTP 설치해보니 이거 빼곤 다른건 메일이 잘옵니다. 호스팅 쪽에 문의도 넣어봐도 문제가 없어보입니다.

    add_action('kboard_document_update', 'my_admin_category_email_alert', 10, 2);

    function my_admin_category_email_alert($content_uid, $board_id){

    혹시 이 함수가 button함수와 맞지 않아서 안되는건가요? document가 아닌 list.php에 있어서 안되는건가요?

    코드 스니펫 삽입 해봣는데 function error 없이 save잘됩니다.

  • 안녕하세요.

    버튼의 onclick 함수명과 액션의 함수명이 달라도 문제가 되지 않습니다.

    ajax로 게시글 업데이트 시에는 kboard_update_data 액션을 사용하시면 될 듯합니다.

    list.php 파일에 아래와 같은 코드를 추가해보시겠어요?

    <script>
    function kboard_new_category_update(content_uid, content, new_category){
        kboard_content_update(content_uid, {category2:new_category, content:content}, function(res){
            if(res.result == 'success'){
                alert('신청 완료되었습니다.');
            }
            else{
                alert(res.message);
            }
        });
    }
    </script>
    
    <button type="button" onclick="kboard_new_category_update('<?php echo $content->uid?>', '<?php echo $content->content?>', '신청 Info')">신청</button>

     

    테마의 functions.php 파일에는 아래의 코드를 추가해보세요.

    add_action('kboard_update_data', 'my_admin_category_email_alert', 10, 2);
    function my_admin_category_email_alert($data, $board_id){
    	if(!class_exists('KBMail')){
    		include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    	}
    	$url = new KBUrl();
    	$mail = new KBMail();
    	$mail->to = get_option('admin_email');
    	$mail->title = "신청 의뢰왔습니다.";
    	$mail->content = $data['content'];
    	$mail->url = $url->getDocumentRedirect($document->uid);
    	$mail->url_name = '페이지로 이동';
    	$mail->send();
    	
    	return $data;
    }

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요