Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12

Github 같은 URL을 연결해 사용하는 WordPress Markdown Plugin – Mytory Markdown

md 파일의 URL을 넣고 버튼을 누르면 에디터에 html을 넣어 주는 플러그인이다. 자매품 Mytory Markdown for Dropbox도 있다.

제안과 버그 신고

Mytory Markdown for Dropbox

원래 이 플러그인은 Dropbox의 Public Link를 이용한 것이었다. Dropbox가 Public Link 기능을 중지하는 바람에 Dropbox로 이 플러그인을 사용할 수는 없게 됐고 일반적인 URL을 사용하는 것으로 변경했다.

대신 Dropbox로 이용할 수 있도록 Mytory Markdown for Dropbox라는 플러그인을 새로 만들었다.

소개 영상

만든 이유

마크다운으로 블로그 글을 쓰고 싶었다. 주요한 이유는 codepre 태그를 쓰기가 너무 불편해서였다. 여긴 개발자 블로그니까. 그리고 워드프레스 관리자 페이지에서 글을 쓰는 것도 별로 맘에 들지 않았다. 글을 쓸 때는 글에만 집중하고 싶은데 워드프레스 관리자 페이지는 너무 무겁다. 버벅대는 느낌이 싫었다. 에디터에서 글을 쓰면 바로 워드프레스로 들어가게 하고 싶었다. 물론 그렇게 할 수 있는 툴들이 있는 것을 알고 있지만, 그 툴들이 생성하는 지저분한 HTML도 싫었다. 까탈스럽다.

이런 기준에 따르면 기존에 나와 있는 워드프레스 마크다운 플러그인들은 모두 맘에 안 들었다. 기본적으로 다 워드프레스 관리자 페이지의 에디터를 이용하도록 돼 있었기 때문이다. 그래서 그냥 만들기로 했다. 아이디어를 얻은 것은 마크다운 포맷을 이용하는 다른 블로그 플랫폼들이었다. Jekyll 같은 툴은 그냥 마크다운 파일을 올리면 그게 블로그 글이 된다. 즉, 자기 컴퓨터에서 마크다운으로 글을 쓰고, 업로드만 하면 끝인 거다. 나도 그런 걸 사용하고 싶었다.

기능

그래서 만든 Mytory Markdown의 기능은 다음과 같다. 설치하려면 플러그인 설치하는 데서 Mytory Markdown으로 검색하면 된다.

  • md 파일의 URL을 받아서 포스트 내용을 동기화한다.
  • 즉, GitHub raw content url 같은 것을 이용할 수 있다.

이게 끝이다. 딴 거 없다. 마크다운 파일로 글 다 쓴 다음 해당 파일의 URL이나 GitHub ‘Raw’ 버튼의 URL을 복사해서 ‘Markdown File Path’에 붙여 넣고 ‘Update Editor Content’ 누른 다음 저장하면 된다. 사실 ‘Update Editor Content’ 버튼도 안 눌러도 된다. 어차피 글 보기할 때마다 파일 검사해서 내용을 갱신한다.

사용법

  • 플러그인을 활성화한 뒤 글쓰기 화면에 들어가면 Markdown File Path라는 항목이 보일 거다. 거기에 md 파일의 URL을 집어넣는다. GitHub를 이용하려면 Raw URL을 넣으면 된다.
  • 붙여 넣은 뒤 ‘Update Editor Content’ 버튼을 누르면 마크다운 파일의 내용이 HTML로 변환돼서 워드프레스 에디터에 들어간다. h1 요소가 있다면 첫 번째 h1 요소를 제목에 집어넣는다.
  • 이후엔 마크다운 파일만 수정하면 컨텐츠도 자동으로 업데이트된다.

설정

설정도 있다. 설정 > Mytory Markdown에 가면 설정할 수 있다.

  • Auto update only when writer (or admin) visits: 이걸 y로 설정하면 글쓴이나 관리자로 로그인해서 해당 포스트(혹은 페이지)에 방문했을 때만 자동 업데이트를 한다. 난 지금 이 모드로 쓰고 있다. 그러면 글을 수정한 다음 수정한 페이지를 한 번 로그인한 채로 방문해 줘야 글이 갱신된다. 난 글 수정한 다음 블로그에 가서 꼭 확인을 하니까 크게 불편함이 없다.
  • Auto update per x visits: x회 방문마다 자동갱신을 한다. 기본값은 1이다. 즉, 기본적으로는 매 방문마다 URL에 접속해서 내용이 달라지지 않았는지 검사한다. 이걸 10으로 설정한다면 해당 글을 10회 방문할 때마다 1번씩 URL에 접속해서 내용이 달라졌는지 확인하게 된다. 만약 관리자로 들어올 때만 자동갱신하는 위 옵션을 y로 했다면 이 숫자는 무의미하다.
  • Markdown Engine: 마크다운 엔진은 세 가지를 지원한다. Parsedown, Parsedown Extra, MarkdownExtra Classic. 워드프레스 최소 PHP 버전이 5.2라 거기 호환되는 마크다운 엔진을 넣어야 했고, 그래서 애초에 MarkdownExtra Classic를 넣었다. 이후 PHP 버전을 검사해서 상위 버전이면 Parsedown을 사용할 수 있게 했고, 그래서 엔진을 고를 수 있게 만들었다. 엔진에 따라 파싱하는 게 약간 다르므로 엔진의 특성에 맞게 작성하라. 당연한 말이지만 Parsedown이나 Parsedown Extra를 사용하길 권한다.

장점

  • 자기가 좋아하는 에디터로 글을 작성할 수 있다.
  • 컴퓨터 파일을 수정하면 글이 자동으로 동기화되므로 관리자 페이지로 가는 불편 없이 편안하게 글을 수정할 수 있다.
  • 마크다운을 HTML로 변환해서 에디터에 넣어 주는 기능만 하는 것이기 때문에 여타 다른 플러그인들과 충돌할 일이 없다. 대표적인 게 short tag인데, 전혀 충돌하지 않는다.
  • 위와 같은 이유로, 플러그인을 제거해도 아무 문제가 생기지 않는다.
  • 실수로 파일을 삭제해도 아무 문제 없다. DB에 내용이 들어가 있기 때문이다. (단, 파일은 살아있는 채로 내용만 날리면 문제가 생긴다. 물론, 워드프레스에 글 history가 기록돼 있으므로 금세 복구할 수 있다.)
  • 워드프레스 에디터 내용만 바꾸는 것이기 때문에 워드프레스 리비전 기능(글 history 기능)이 그대로 살아 있게 된다.
  • 실수로 웹사이트가 날아가도 자기 컴에 md 파일이 다 남아 있기 때문에 핵심 콘텐츠인 글은 다 살아있게 된다.

사실 지금 난 jekyll을 사용하긴 하는데

난 블로그 트래픽 문제로 jekyll을 사용하는 GitHub Page로 블로그를 옮겼다. 하지만 이 플러그인도 100명 정도는 사용하고 있어서 계속 개발중이다. Mytory Markdown for Dropbox로 그래서 만들었고 말이다.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

댓글 (32개)

  • 플러그인 안내 포스트까지 올려주셔서 감사합니다. ^^
    우선 글이 올라온 기념으로 몇가지 제안을 올립니다. ^^;

    첫째로, Markdown 파일 내에서 Title, Slug, Tag, Category, Excerpt 를 설정할 수 있게 해주시면 좋을 것 같습니다. 전에 Scriptogram 이라는 블로그를 사용한 적이 있는데, 그 블로그 역시 Dropbox를 이용한 블로그였습니다. 그런데, Scriptogram은 Markdown 파일 내에서 Title등을 설정하도록 되어 있었는데, 꽤 편리하게 느껴졌습니다. 그래서 Mytory Markdown 플러그인에도 적용되었으면 좋겠습니다.

    둘째로, 어드민 페이지에 들어가지 않고도 자동으로 글을 올릴 수 있으면 좋겠습니다. 앞에서 언급한 Scriptogram의 경우에는 “Published” 속성이 “false”면 글이 포스팅되지 않고, “ture”면 글이 포스팅되는 형식으로 자동으로 글을 올릴 수 있었습니다. 즉, 맨처음에 글을 작성할 때 “Published: false”라고 설정하고 글을 쓰고, 글을 모두 작성한 뒤에 “Published: ture”라고 바꾸거나, 아니면 “Published” 속성을 지우면 글이 포스팅되도록 설정되어 있었습니다.
    Mytory Markdown 플러그인에도 이런 기능이 추가된다면 더 편리하지 않을까 싶습니다.

    마지막으로 좋은 플러그인 만들어 주셔서 다시 한 번 감사합니다. ^^

    • 말씀드린 기능들은 차차 검토해서 구현하거나 해 볼 게요. 저도 생활인이라 무거운 기능들은 바로바로 구현하기가 힘듭니다. 여튼간에 좋은 아이디어들 주셔서 감사합니다.

      • 신경 써주셔서 감사합니다. ^^
        사실 지금 있는 기능만해도 충분해서 꼭 저 기능들이 필요한 것은 아닙니다.
        녹풍님께서 필요하다고 생각하시면 검토하셔서 작업해주세요.

  • 우선 제가 원하는 플러그인을 찾아서 제 블로그에 댓글까지 달아주셔서 감사합니다. ^^ 그런데 제 블로그에서는 그 플러그인이 제대로 작동하지 않네요. 시험삼아서 무료 호스팅에 테스트 용도로 사용하는 블로그에도 적용해봤는데, 그 블로그에서도 정상 작동하지 않았습니다. 아무래도 그 플러그인은 아직 쓸만한 상태는 아닌 것 같습니다. ㅠㅠ

    어쨌든 이번에는 질문이 있어서 찾아왔습니다.
    지금까지는 잘 몰랐는데, Mytory Markdown 플러그인으로 글을 작성하고, 임시글로 저장한 다음에, Markdown 파일을 수정하면 그것이 워드프레스에 반영이 되는데, 글을 발행하고 나면 Markdown 파일을 수정해도 워드프레스에 반영되지 않네요. 글에 들어가서 직접 “Update Editor Content”를 눌러줘야 수정된 내용이 반영됩니다.

    원래 그런건가요? 아니라면 다른 플러그인과의 충돌 때문일수도 있으니 확인해볼 생각입니다.

    • 혹시 Settings > Mytory Markdown 에서 “Auto update only when writer (or admin) visits”가 ‘y’로 돼 있는 거 아닌지 확인해 보세요.

      • N으로 되어 있는 것을 확인했습니다. 앞에서 말씀드린 증상이 그대로네요.
        혹시나 싶어서 무료 호스팅에 만들어놓은 테스트 블로그에도 시험해 봤는데, 그 블로그에서는 정상적으로 작동하는군요. 무슨 문제인지 모르겠습니다. ㅠㅠ

          • 네 덕분에 저도 버그 하나를 발견해서 도움이 됐습니다.

  • [Update Editor Content] 버튼을 선택하니

    Network Error! Maybe, connection error.

    라는 메시지가 출력되네요. 혹시나 원인을 알 수 있을까요?

    • 원인은 에러 메시지 그대로 네트워크 에러 때문입니다. 서버 업체 쪽에서 서버가 dropboxusercontent로 접속을 하지 못하게 막아 놓은 건 아닌지 확인해 보세요.

      프로그래밍적으로 설명해 드리면, curl_getinfo 호출에 http_code가 0으로 응답이 왔기 때문에 발생하는 에러입니다. 파일이 없다면 404가 와야 하고, 정상 접속되면 200이 와야 하거든요. 그런데 파일이 없는 것도 아니고 정상 접속된 것도 아니고 그냥 0이 왔으니 아예 연결이 안 되는 것으로 볼 수 있겠습니다.

  • 아까 질문 올렸던 댓글이 삭제되어서 다시 한 번 올립니다.

    “Auto update only when writer (or admin) visits” 옵션을 “N”으로 설정했을 때,
    정확히 어떤 상황에서 업데이트가 되는 지 궁금합니다.

    전 관리자가 로그인을 하면 그 블로그에서 Mytory Markdown으로 작성한 모든 글이 업데이트가 된다고 이해하고 있었는데, 이제 보니 그냥 방문자가 해당글을 방문할 때 업데이트가 이루어지는 것 같기도 하더라구요.
    혹시 방문자가 해당글을 방문할 때마다 드롭박스에 있는 해당 마크다운 파일을 불러와서 비교한 후 변경사항이 있으면 글을 업데이트하는 방식인가요?

    정확한 업데이트 방식이 궁금해서 댓글 달아봅니다. 답변 부탁드려요.

    • 관리자가 방문한 경우 업데이트하는 옵션을 끄면, 불특정 방문자가 방문한 해당 글이 업데이트되는 겁니다.

      검색으로 우연히 A 글에 들어온 경우, A 글에 변경이있으면 갱신됩니다.

      그리고 방문이 있기 전까지는 변경사항이 갱신되지 않습니다.

      • 그럼 방문자가 방문할 때마다 드롭박스에서 해당 마크다운 파일을 다운받아서 변경이 있는 지 확인하고 변경사항이 있으면 글을 업데이트하는 방식인가요?
        그렇다면 호스팅에서 제공하는 트래픽이 적은 경우 트래픽 문제가 생길 수 있긴 하겠네요.

      • 예. 그렇죠. 다만 전문을 받아서 비교하진 않아요. 헤더만 받아와서 비교해요.

    • 블로그 서버 이전으로 지난 며칠 간의 핑백과 댓글이 날아갔는데 아마 그 와중에 댓글이 달렸었나 봅니다. 별다른 댓글이 없었다고 생각해서 굳이 DB 복구를 하지 않았는데, 아니었군요.

  • 너무나 좋은 플러그인입니다. 한국인 개발자분이라 반가운 맘에 여기까지 왔습니다.
    감사합니다.~

    • 제가 쓰려고 만들었는데 좋아하는 분들이 많아서 기분이 좋습니다 :)

  • 좋은 플러그인 개발해 주셔서 감사합니다.~
    문의 드릴 내용이 있어 글을 올립니다.
    markdown 파일을 wordpress로 전송할때. <script …
    를 제거하는 것으로 판단되는데 살릴방법이 있나요?

    코드를 넣는 다양한 방법을 생각하다.
    github의 gist를 테스트 해보니.
    embed가

    이런 식으로 제공하는데, 서버에 적용된 글에서는 사라져 있습니다.
    감사합니다.~

  • 또 질문이 있어서 찾아왔습니다. ^^;

    첫번째 질문은,
    제가 Mytory Markdown 플러그인과 WP Super Cache 플러그인을 함께 사용하고 있습니다. Mytory Markdown 플러그인은 “글쓴이 (혹은 관리자)가 글을 볼 때만 자동 갱신” 옵션의 값을 “Y”로 해 놓았습니다. 그리고 WP Super Cache 의 옵션중에서 “Don’t cache pages for known users.” 옵션을 켜고 사용하다가, 로그인 사용자뿐만 아니라 댓글을 한 번이라도 달았던 방문자에게도 캐시된 페이지를 보여주지 않는 것을 알게되고나서 그 옵션을 끄고 사용중입니다.
    그랬더니 이제는 관리자로 로그인한 상태에서 연결된 마크다운 파일이 업데이트된 글에 들어가도 글이 업데이트가 되지 않는군요. 사실 WP Super Cache의 “Don’t cache pages for known users.” 옵션을 다시 켜면 해결되는 문제이기는 하지만, 혹시 따로 해결 방법이 있는 지 여쭤보려고 댓글 달아봅니다.

    그리고 두번째 질문은,
    최근에 워드프레스 제작사가 만든 Jetpack 플러그인에서 마크다운 기능이 추가되었습니다. 어차피 글은 Mytory Markdown 플러그인을 쓰니 워드프레스 에디터에 마크다운 기능이 추가되는 것에는 별 관심이 없고, 전 댓글에 마크다운 기능이 들어가면 좋겠다고 생각하고 있었습니다. 그래서 Jetpack의 마크다운 모듈을 활성화하고 보니까, Mytory Markdown으로 글을 쓰는 경우, 문제가 생기는 경우가 있더라구요. 예를 들어 HTML 태그가 실행되지 않도록 하기 위해서을 ` 를 사용해서 code태그를 적용시키는 경우 이게 두번에 걸쳐서 마크다운으로 해석되면서 의도했던 것과는 달리 표현되어 버립니다. Jetpack의 마크다운 모듈이 댓글에만 적용 가능하면 좋겠는데 또 그건 안되더라구요. 혹시 이 부분이 해결 가능할까요?

    • 좋은 질문 감사합니다.

      첫 번째 것은, 저도 수퍼 캐시를 사용해서 똑같이 겪는 문제입니다. 저는 그냥 해당 글의 캐시를 삭제하고 새로고침하려고 합니다. 그리고 그냥 놔두고 새로고침을 여러 번 하니 갱신된 경우도 있었습니다. 정확히 규칙을 찾은 건 아닌데 여튼 그렇습니다.

      두 번째 것은 아마도 해결 가능할 겁니다. 시간 될 때 작업해 보고 알려드리겠습니다.

  • 안녕하세요. 워드프레스도 마크다운도 초보자인데 검색을 하다 보니 이런 좋은 플러그인이 있다는 걸 알게 되어 유용하게 이용하고 있습니다.

    1.
    저는 드롭박스 무료유저라서 public folder 기능이 없다 보니 설명만 읽었을 때는 이 플러그인을 사용할 수 없는가 싶었는데, 파일 개별 공유 링크 페이지의 다운로드 링크를 입력하면 정상작동하는 것을 보고 편리하게 이용하고 있습니다. 사용법에 public folder를 활성화하지 않아 파일의 공유 링크 url에서 http://www.dropbox.com 를 dl.dropboxusercontent.com 로 변경하여 입력하면 된다는 점을 알려주시면 더 알아듣기 쉽지 않을까 싶습니다.

    2.
    최근에 이 플러그인을 사용하기 위해 여러 글들의 주소를 복붙하는 노가다를 하다 보니 공유주소 생성을 한 후 마크다운 주소에 붙여넣을 때 주소를 수동으로 바꿔주는 일이 제법 번거로웠습니다. 포커스를 잃을 때 주소를 자동변환하도록 meta-box.php의 jQuery 부분에
    $('#mytory-md-path').blur(function(){
    var url = $(this).val();
    var url_replace = url.replace('www.dropbox.com','dl.dropboxusercontent.com');
    $(this).val(url_replace);
    });

    와 같이 함수를 추가하니 생성된 공유주소만 입력해도 되어 한결 수월하게 작업을 마쳤습니다. 혹시 괜찮으시다면 플러그인을 업데이트하실 때 주소 자동 변환 기능을 포함해주신다면 같은 불편을 겪은 다른 분들도 불편을 조금 덜지 않을까 싶습니다.

    3.
    무료버전인 상태에서 드롭박스는 폴더를 공유했을 때 https://www.dropbox.com/sh/폴더주소/파일고유주소/파일명와 같이 하위 파일들의 주소를 엑세스하기 힘든 구조이지만 구글드라이브는 공유 폴더의 주소를 확보하면 https://googledrive.com/host/폴더주소/파일명와 같이 내부 파일명을 알면 엑세스 가능한 것으로 알고 있습니다. 혹시 이 플러그인이 다른 클라우드를 지원하게 된다면 이런 점을 이용해서 파일명과 포스트 제목/슬러그를 연동해서 일괄 적용하는 기능이 생겨도 좋지 않을까 하는 생각이 들었습니다.

    말이 길었는데 핵심은 플러그인을 잘 사용하고 있다는 점입니다. 좋은 플러그인을 개발해주셔서 다시 한 번 감사드립니다.

    • 좋은 아이디어 감사합니다. 반영해 보도록 하겠습니다.

      그런데 드롭박스 정책이 바뀌었나요? 유료 사용자에게만 퍼블릭 폴더를 허용하는 것으로? 몇 달 전까지만 해도 https://www.dropbox.com/enable_public_folder 에 방문하면 활성화됐었는데.

      그리고 지금 URL은 etag가 지원되는 서버라면 아무거나 넣으면 됩니다. 드롭박스인지 아닌지 판단하지 않아요.

  • 좋은 플러그인 만들어주셔서 감사합니다. 제가 원하던 기능이 딱 구현되어 있어서 이 플러그인을 발견하고 매우 기뻤습니다. :)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다