이미지 업로드시 Addons 폴더의 기능 사용방법

안녕하세요

Kboard를 잘 사용하고 있습니다.

외국 어떤 프로그램 보다 이렇게 훌륭한 프로그램이 한국 개발자가 개발하고 있다는 사실에 감탄하였고, 또 이렇게 한글로 질문을 올릴수 있다는 사실에 참으로 행복합니다.

 

저는 케이보드로 제가 직접 공사한 사진을 올리고 있습니다.

그런데 동종업자가 제 사진을 무단으로 도용하여 자신의 홈페이지에 직접 작업한 것 마냥 올리고 있는 것을 발견했습니다.

항의 메일을 보내기는 했으나 앞으로 이런 일이 또 생길 것 같아 조치를 하려고 합니다.

 

알아보니 워터마크라는 것을 달아서 도용을 방지할 수 있다고 하더군요

하지만 kboard에서는 워터마크가 지원하지 않는다는 것을 알게되었습니다.

그래도 저는 kboard에 워터마크 기능을 지원하도록 하고 싶습니다.

(물론 포토샵을 이용하면 된다고는 하지만

프라이버시 때문에 고객분에게 업로드시 허락을 받아야 해서  

현장에서 바로 휴대폰으로 사진을 찍어서 업로드 합니다)

 

 

그런데 약간의 문제가 있습니다.

예전에 아는 지인에게 부탁하여 kboard를 잠깐 수정하였던 적이 있습니다.

그런데 kboard를 업데이트 하였더니 기능이 동작하지 않았습니다.

그래서 지인에게 부탁하였더니 어떤 몇 개의 파일을 수정하라고 하더군요

처음에는 했지만 몇번 kboard가 업데이트 하면서 그것이 힘들더군요.

 

 

그래서 질문 드립니다.

  1. Addons 폴더 관련 질문

이 폴더는 다른 플러그인과 연동을 위해서 혹은 액션과 필터를 사용해 새로운 기능을 추가하기 위한 코드를 작성하기 위한 폴더입니다. (예전 답변 검색했습니다)
=> 이곳에 원하는 파일을 업로드 하면 kboard 업데이트시 계속 사용할 수 있나요?

2. 이미지 파일 업로드시 수정방법
위 Addons 폴더에 파일을 업로드 하고 kboard에 미디어 추가 를 이용할 때
최소한의 수정으로 사용하는 사용예를 알려주시거나 볼 수 있을까요?
(최소한의 수정이 아니더라도 kboard에 미디어 추가를 이용하여 이미지 파일이 업로드 되었을때
어떻게 Addons 에 있는 소스를 사용하는지 알려주시면 좋겠습니다)

 

 

마지막으로 다시 한번 좋은 프로그램을 만들어 주신것에 감사드립니다.

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

    1. FTP로 접속해서 /wp-content/plugins/kboard/addons/ 경로에 있는

    기존의 파일을 수정하는 게 아니라면

    별도로 파일을 추가하실 경우 덮어쓰기로 업데이트 시 추가하신 파일을 지워지지 않습니다.

     

    예를 들어, /wp-content/plugins/kboard/addons/test.php 파일을 새로 생성하고

    test.php 파일에 코드를 추가하시면 플러그인에서 자동으로 불러와 실행합니다.

     

    그리고 KBoard 코어 파일을 직접 수정하실 경우 업데이트 시 수정하신 코드가 지워질 수 있습니다.

     

    addons 디렉토리에 파일을 추가하는 방법 외에

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가하는 걸 권장드립니다.

     

    2. 이미지 파일 업로드 후에 코드를 어떤 식으로 적용할지는

    올려주신 내용만으로는 이해가 잘 가지 않습니다.

    게시글 작성 후 코드를 추가하고 실행되게 하시려면

    kboard_document_insert 액션을 활용해보시겠어요?

     

    KBoard 주요 액션과 필터에 대한 설명은

    아래 링크를 참고해보세요.

    https://www.cosmosfarm.com/products/kboard/hooks

     

    커뮤니티에서 저희가 모든 코드를 만들어 드리는 건 현실적으로 불가능하며

    100% 해결을 보장해드리긴 어렵습니다.

    그렇기 때문에 수정해야 할 부분이 많거나

    코드를 직접 수정하기 어려우시다면

    프로젝트 의뢰에 상세 내용을 올려보세요.

    https://www.cosmosfarm.com/project

    고맙습니다.

  • 친절하신 답변에 감사드립니다.

    신경써서 알려주신 url https://www.cosmosfarm.com/products/kboard/hooks 의 경우

    사실 질문을 올리기 전에 검색해서 살펴보던 것이었습니다.

    물론 그래도 알려주셔서 다시 한번 찾아보았습니다.

     

    그런데 저렇게 질물을 올린 이유는

    위 액션과 필터는 〃kboard에 미디어 업로드〃 의 경우 적용할 수 있는 경우가 없는 것으로 보이기 때문입니다.


     

    즉 글을 작성할때의 kboard_document_insert 를 사용한다고 가정하면

    미디어 추가시에는 워터마크가 찍히지 않은 상태로 본후

    글을 작성해야만 워터마크가 보이는 약간 앞뒤가 뒤바뀐 상황이 되는것 같다고 생각했습니다.

     

     

    그래서 어쩔수 없이 〃kboard에 미디어 업로드〃 처리시의 부분의 소스를 수정해야 한다는 것입니다.

    그런데 그렇다고 KBContentMedia.class.php 파일을 수정하면 결국에는 또 사용할 수 없게 될것 같기 때문에

    위에서 알려주신 대로 /wp-content/plugins/kboard/addons/test.php 에 원하는 소스를 만들고 (ex gen_watermark($path); )

    KBContentMedia.class.php 의 수정없이 

    index.php (정확히는 모름) 에서 

    〃kboard에 미디어 업로드〃  시 KBContentMedia.class.php 에서 처리된 파일을 

    wp-content/plugins/kboard/addons/test.php의 gen_watermark($path); 함수를 호출하는 부분을 어디에 추가하면 될까 하는 것입니다.

     

    제가 한다리 건너서 듣고 글을 작성해서 제대로 전달이 되는지 모르겠습니다.^^;

    읽어 주셔서 감사합니다.

  • 안녕하세요.

    kboard_content_media_metadata 필터를 활용해서

    별도의 코드를 추가하는 건 어떨까 합니다.

    해당 필터는 KBoard 미디어 추가 시 파일의 메타 데이터를 편집하기 위한 필터입니다.

    코드 사용 예제는 아래와 같습니다.

    add_filter('kboard_content_media_metadata', 'kboard_content_media_metadata_20210702', 10, 3);
    function kboard_content_media_metadata_20210702($metadata, $attach_file, $media){
    	// 이곳에 코드를 추가해보세요.
    	
    	return $metadata;
    }

     

    $attach_file 변수에 객체 형태로 파일 이름이나 파일 경로가 저장됩니다.

    $attach_file->path 코드로 파일 경로를 확인해보실 수 있습니다.

     

    kboard_content_media_metadata 필터는

    FTP로 접속해서 /wp-content/plugins/kboard/class/KBContentMedia.class.php 파일에

    upload 메소드에서 확인해보실 수 있습니다.

    고맙습니다.

  • 우선 답변 달아 주셔서 감사드립니다.

    말씀 하신 kboard_content_media_metadata 가

    KBContentMedia.class.php 소스 파일에 있네요.

    이제 주말에 열심히 해서 알려주신 필터를 이용해 파일을 처리하는 일만 남았네요. :-)

    아 기대 됩니다.

     

     

    그럼 즐거운 주말 되세요~

     

     

     

  • 이곳에 계속해서 답변을 적으시면 보시는지 모르겠지만

    우선은 글 주제가 계속 연관성이 있으니 이곳에 적겠습니다.

     

    먼저 알려주신 kboard_content_media_metadata 필터로 위 워터마크를 잘 해결하였습니다.

    감사드립니다. :-)

     

    그런데 다른 문제가 있습니다.

    바로 임시로 업로드 된 파일의 삭제관련 하여 문제 입니다.

     

    (에디터에서 이미지 목록을 보며 편집을 하다보니 업로드만 하고 안 쓰이는 이미지가 생기더군요.

    기존에는 kboard가 처리루틴을 잘 만들어 놓아서 문제가 없었는데, 

    새로운 기능을 추가하면서 생긴 파일은 기존 처리루틴으로 삭제되지 않아 생기는 문제 입니다.

    호스팅 업체가 공간당 돈을 받아서 신경이 쓰입니다.)

     

     

    그래서 KBContentMedia.class.php 를 찾다보니

        /**
         * 게시글과의 관계가 없는 미디어는 삭제한다.
         */
        public function truncate(){ ...}

    이런 함수가 있는것을 알게되었습니다.

     

    이 함수

    kboard에 미디어 추가로 업로드 한후 실제 글의 내용으로 들어가지 않은 경우 삭제되는 함수로 알고 있습니다.

    그런데 저의 경우 제가 파일을 워터마크를 넣기 전에 원본을 백업하는 과정을 거치는데

    이런 경우 백업된 원본파일이 삭제되지 않는다는 문제가 생기는 것입니다.

     

    function truncate() 을 수정하면 된다고 하지만

    그렇게 하면 또 kboard update시에 다시 수정해야 하기 때문에 문제가 발생됩니다.

     

     KBContentMedia.class.php 의 function truncate() 를 수정하지 않고

    외부에서 처리할 수 있는 방법이 가능한지 궁굼합니다.

    (제 지인은 안된다고 하는데, 저는 꼭 되었으면 하네요 ^^;)

     

    그럼 읽어주셔서 감사합니다.

     

     

     

  • 새로운 질문이 아닌 이어지는 질문이라면 댓글로 이어서 남겨주시면 됩니다.

    추가하신 코드가 어떻게 동작하고 있는지 저희 쪽에서 파악하기 어렵습니다.

    파일을 삭제하는 건 PHP unlink 함수로 삭제하실 수 있습니다.

    추가하신 코드 쪽에서 워터마크 처리되기 전의 이미지를 찾아서

    unlink 함수로 제거해주시면 되실 듯합니다.

     

    KBContentMedia 클래스의 truncate 함수를 실행되게 하시려면

    워터마크 처리 코드 밑에

    아래의 코드를 추가해서 확인해보시겠어요?

    $media = new KBContentMedia();
    $media->truncate();

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기