메뉴 닫기

WordPress GitHub Sync 플러그인으로 GitHub와 워드프레스 동기화하기

Mytory Markdown 플러그인을 대체하여 Markdown 문서를 워드프레스로 쉽게 올릴 수 있는 방안을 다시 고민하다가 워드프레스 플러그인 중, WordPress GitHub Sync를 사용해보기로 했습니다.

WordPress GitHub Sync 플러그인은 플러그인의 이름처럼, WordPress와 GitHub를 동기화하는 기능을 수행합니다. Mytory 플러그인이 개별 글 별로 동기화를 하는 것과는 다르게, 전체 워드프레스 포스트와 페이지를 동기화합니다. 따라서 잘못 사용하면 전체 블로그가 뒤죽박죽될 수 있기 때문에 조심히 사용해야 할 것 같습니다.


설정 방법

  • 플러그인을 설치하고 활성화합니다.
  • 설정 > GitHub Sync 페이지에서 요구하는 정보를 입력합니다.

    • Repository : 소유자/저장소명 형태로 입력합니다.
    • Oauth Token : 아래쪽 personal oauth token 링크를 클릭하여 이동한 페이지에서 public_repo에 체크한 후, 토큰을 생성합니다. 생성한 토큰 번호를 입력합니다.
    • Webhook Secret : 패스워드 수준의 비밀 문구를 입력합니다.
    • Default Import User : 누가 올린 글인지 특정할 수 없을 때 사용할 사용자를 선택합니다.
    • 변경 사항을 저장합니다.
  • 해당 GitHub 저장소 페이지를 열고 Settings > Webhooks로 이동합니다.
  • Add webhook을 눌러 새로운 webhook을 만듭니다.

    • Payload URL : 위쪽 워드프레스 설정 페이지에 있는 Webhook callback URL을 복사하여 붙여넣습니다.
    • Content type : application/json을 선택합니다.
    • Secret : 워드프레스에서 생성한 webhook secret을 입력합니다.
    • trigger : push event를 선택하면 될 것 같은데, 전 테스트를 위해서 everything이 선택된 상태입니다.


사용 방법

플러그인 설명에 따르면, 워드프레스에서 글을 하나 저장하는 시점에 자동으로 GitHub로 해당 글이 Export되고, GitHub에서 push webhook(outbound API call) 명령이 발생하면 전체 변경 내역이 동기화된다고 돼 있습니다.

제가 정확한 사용 방법을 몰라서 그런지 몰라도, 워드프레스에서 글 수정한 것은 반영이 되는데, VSC에서 push한 것은 워드프레스로 바로 반영이 안 되고, 설정에 가서 Import from GitHub를 클릭해야만 반영이 되네요. webhook에 의한 push를 어떻게 발생시키는지 좀 더 알아봐야 겠습니다.


게시물 등록

마크다운 문서 위쪽에 아래와 같이 입력한 후에 GitHub에 등록하면 해당 정보대로 등록됩니다.

---
post_title: 제목
layout: post or page (글의 종류. post와 page를 지원하고 타입 추가 가능하다고 함.)
published: true or false (false로 올리면 임시글로 업로드됨)
---


동작 방식

현재까지 제가 파악한 동작 현황입니다.

  • 전체 포스트와 페이지가 세 개 폴더로 구분되어 동기화됩니다.
    • _drafts, _pages, _posts
  • 워드프레스에서 임시글이나 비공개글은 GitHub로 Export되지 않습니다.
  • 워드프레스에서 글을 삭제한 후 동기화하면 GitHub에서도 삭제됩니다.
  • GitHub에서 글을 삭제해도 워드프레스에서는 삭제되지 않는 것 같습니다(한번 테스트해봤었는데 기억이 가물가물하네요).
  • 새로운 마크다운 문서를 워드프레스로 동기화하면, _drafts, _pages, _posts 폴더 중 하나로 이동되어 새로운 제목의 문서가 생성됩니다(따라서 문서 제목을 짓는데 고심할 필요가 없습니다).
  • 마크다운 문서를 업로드할 때 publishedfalse로 하면 drafts 폴더로 동기화됩니다.
  • 기존에 작성된 워드프레스 문서를 Export to GitHub할 때 전체 문서가 마크다운 문서로 변환됩니다. 이 때 마크다운 문서는 마크다운 문법으로 변환되고, HTML 문서는 HTML 문법으로 인식하여 변환됩니다. 간혹 마크다운 문서인데, HTML로 인식되어 변환된 경우도 있었습니다.


버그

  • 현재 저는 Featured Image From URL라는 플러그인을 이용 중인데, Page를 Export하고 Import할 때 불필요한 dummy featured image가 생성됩니다. 이에 대해서 개발자 포럼에 이슈를 올리긴 했는데, 당장 수정되지 않는다면 페이지를 포스트로 변환하는 방법도 고려해봐야할 것 같습니다.


2017년 2월 1일 오후 9시 38분 내용 추가

계속 사용하다보니 페이지는 물론 포스트에서 외부 이미지에 불필요한 더미 이미지가 계속 생기는 문제가 발생합니다. 더 큰 문제는 수정한 글만 그런게 아니고, 나머지 글들도 계속 발생해서, 문제가 발생한 글을 일일이 찾아서 수정해야 하는 번거로움이 있네요. 혹 떼려다 혹 붙이겠습니다. 그냥 복사/붙여넣기 신공을 이용해야겠네요.




2017년 2월 2일 오후 10시 00분 내용 추가

해당 GitHub 이슈란에 올리니 개발자가 적극적으로 응대해줘서 다시 사용을 하고 있습니다. 임시방편이지만 아래와 같은 방법으로 현재 별다른 문제없이 사용 가능하네요.

  1. wp-content 폴더 아래에 mu-plugins 폴더 안에 wpghs-custom-filters.php 파일을 만듭니다. 폴더가 없다면 새로 생성합니다.
  2. 아래 코드를 입력하고 저장합니다.
<?php
  add_filter('wpghs_pre_import_meta', function ($meta) {
    unset($meta['fifu_image_url']);
    return $meta;
  });
?>


참고

1 Comment

  1. 핑백:c2wzl5s

댓글 남기기