코스모스팜 스레드

답변글에 대한 알림 설정 문의드립니다.

댓글을 쓰면 글 게시자에게 댓글 알림이 메일로 갑니다. 
댓글을 단 A라는 사람 글에 B글게시자, 관리자가 답글을 남기면 A댓글분에게 메일로 답글에 대한 알림이 갔으면 좋겠습니다.
두분 다 회원입니다. 

검색하다 아래 코드를 functions.php에 넣었습니다.   표시되는 오류들입니다..
.에러로그 > PHP Notice: Undefined index: product_type in /wp-content/plugins/mangboard/plugins/widgets/commerce_gallery/commerce_gallery.php on line 156
.워드프레스 > 외모> 테마편집기에서 수정하며....
>> 오류글:  치명적인 에러를 점검하기 위해 사이트와 통신할 수 업습니다. 따라서 PHP 변경사항이 원래의 것으로 복구됐습니다. PHP 파일 변경사항을 SFTP와 같은 다른 수단을 통해 업로드 해야 합니다.

(https://www.cosmosfarm.com/threads/document/12637)
add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
function my_kboard_comments_insert($comment_uid, $content_uid){
    $comment = new KBComment();
    $comment->initWithUID($comment_uid);
    $document = new KBContent();
    $document->initWithUID($content_uid);
    
    if($comment->parent_uid){
        $parent = new KBComment();
        $parent->initWithUID($comment->parent_uid);
        
        if($parent->user_uid){
            $user = new WP_User($parent->user_uid);
        
            if($user->user_email && $user->id != get_current_user_id()){
                if(!class_exists('KBMail')){
                    include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
                }
                $url = new KBUrl();
                $mail = new KBMail();
                $mail->to = $user->user_email;
                $mail->title = "답글이 등록 되었습니다.";
                $mail->content = $comment->content;
                $mail->url = $url->getDocumentRedirect($document->uid);
                $mail->send();
            }
        }
        else if($parent->option->email){
            if(!class_exists('KBMail')){
                include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
            }
            $url = new KBUrl();
            $mail = new KBMail();
            $mail->to = $parent->option->email;
            $mail->title = "답글이 등록 되었습니다.";
            $mail->content = $comment->content;
            $mail->url = $url->getDocumentRedirect($document->uid);
            $mail->send();
        }
    }
}

 

--------------------------------------------------

현재 >> 

테마 함수 (functions.php)에 적용된 추가 코드입니다.

add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
function my_kboard_comments_insert($insert_id, $content_uid){
    $comment = new KBComment();
    $comment->initWithUID($insert_id);
    $document = new KBContent();
    $document->initWithUID($content_uid);
    
    if($document->member_uid){
        $user = new WP_User($document->member_uid);
        
        if($user->user_email && $user->ID != get_current_user_id()){
            if(!class_exists('KBMail')){
                include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
            }
            
            $url = new KBUrl();
            $mail = new KBMail();
            $mail->to = $user->user_email;
            $mail->title = "[댓글알림] {$document->title}";
            $mail->content = $comment->content;
            $mail->url = $url->getDocumentRedirect($document->uid);
            $mail->url_name = __('Go to Homepage', 'kboard');
            $mail->send();
        }
    }
}
add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
function my_kboard_comments_insert($comment_uid, $content_uid){
    $comment = new KBComment();
    $comment->initWithUID($comment_uid);
    $document = new KBContent();
    $document->initWithUID($content_uid);
    
    if($comment->parent_uid){
        $parent = new KBComment();
        $parent->initWithUID($comment->parent_uid);
        
        if($parent->user_uid){
            $user = new WP_User($parent->user_uid);
        
            if($user->user_email && $user->id != get_current_user_id()){
                if(!class_exists('KBMail')){
                    include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
                }
                $url = new KBUrl();
                $mail = new KBMail();
                $mail->to = $user->user_email;
                $mail->title = "답글이 등록 되었습니다.";
                $mail->content = $comment->content;
                $mail->url = $url->getDocumentRedirect($document->uid);
                $mail->send();
            }
        }
        else if($parent->option->email){
            if(!class_exists('KBMail')){
                include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
            }
            $url = new KBUrl();
            $mail = new KBMail();
            $mail->to = $parent->option->email;
            $mail->title = "답글이 등록 되었습니다.";
            $mail->content = $comment->content;
            $mail->url = $url->getDocumentRedirect($document->uid);
            $mail->send();
        }
    }
}

이 페이지의 내용이 유익하시나요? 혹은 더 많은 답변을 받길 원하시면 이 페이지를 공유 해보시는건 어떨까요?

내 홈페이지에 소셜 공유 버튼 추가하기

코스모스팜 회원관리
코스모스팜 회원관리
  • 안녕하세요~^^

    PHP Notice: Undefined index: product_type in /wp-content/plugins/mangboard/plugins/widgets/commerce_gallery/commerce_gallery.php on line 156

    메시지는 KBoard 플러그인이 아닌 망보드 쪽에서 표시하는 듯합니다.

    해당 제작자에게 문의해보시겠어요?

     

    워드프레스 관리자 페이지에서 테마의 functions.php 파일을 수정할 수 없다면

    모든 플러그인을 비활성화하신 후에 다시 수정해보시겠어요?

    그래도 같은 문제가 발생한다면 호스팅 업체에 문의를 해보셔야 할 듯합니다.

    또는 FTP로 접속해서 /wp-content/themes/사용중인테마/functions.php 파일에 직접 추가해주셔도 됩니다.

     

    워드프레스의 액션은 여러 개 등록할 수 있지만

    PHP 함수는 같은 이름을 중복해서 사용할 수 없습니다.

    올려주신 기존의 코드를 아래처럼 변경해보시겠어요?

    add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
    function my_kboard_comments_insert($insert_id, $content_uid){
    	// 생략...
    }
    add_action('kboard_comments_insert', 'my_kboard_comments_insert1', 10, 2);
    function my_kboard_comments_insert1($comment_uid, $content_uid){
    	// 생략...
    }

    my_kboard_comments_insert, my_kboard_comments_insert1 이런 식으로 동일한 함수명 대신 다르게 해주셔야 합니다.

     

    워드프레스 액션에 대한 설명은 아래의 링크를 참고해보시겠어요?

    https://developer.wordpress.org/reference/functions/add_action

    고맙습니다.

  • 해결했습니다. 정말 감사합니다!!!

코스모스팜 회원관리