1. 이전 배경 및 참고 사항

XE에서 워드프레스로 이전을 결심한 이유는

  • XE의 더딘 발전 및 문제 발생 시 해결이 쉽지는 않고
  • 제공되는 위젯이나 레이아웃등이 제한적이라서 항상 한계를 느꼈고
  • 향후 포스팅 글을 자유롭게 관리해(카테고리를 쉽게 바꾸어 분류를 새롭게 한다든지 등등) 컨텐츠 관리를 flexible하게 하고 싶었는데

지금 생각해보면 컨텐츠를 보다 자유롭게 관리할 수 있는 툴로서 워드프레스가 아니가 싶었고 이게 가장 영향이 큰 것 같습니다.

워드프레스로 이전하고나서 간단히 정리한 장단점을 정리했는데요. XE에서 워드프레스로 이전 후 느끼는 장단점 정리라는 글을 참조하시면 좋을 것 같습니다.

2. 워드프레스로 이전 방법을 찾자

이전을 결심하고 알아보니 이전할 수 방법이 거의 없다시피 하더군요. 일반인을 위한 간편한 툴들이 거의 없었습니다.
인터넷을 찾아보면 간혹 DB 자체를 이동시킨 경우가 간혹 있었습니다. 그래서 DB 등 이 방면에는 전혀 문외한이지만 공부해가면 이전하기로 하고 인터넷을 뒤지기 시작했습니다.

워드프레스로의 이전은 마이스토리님[^]과 Nickspace의 글이 큰 도움이 되었습니다.

XE와 워드프레스의 DB 구조가 다르고 설계 방식이 많이 다르므로 Mysql에 대해 깊은 조예를 가지지 못한 저의 경우는 한계를 느낄 수 밖에 없었습니다. Nickspace에서는 현란한 쿼리를 사용했던데 현재 버젼에는 문법이 맞지않는다는 메세지와 함께 에러를 뿜어댑니다.

이러면 어쩔수 없이 기본 문법만 사용했구요. 그러다보니 노가다로 처리한게 넘 많습니다.
아무튼 저처럼 DB에 대해서 잘 모르는 문외한이 용기를 내어 DB이전을 시도할 시 삽질기를 참조해 주시기 바랍니다.

XE에서 DB로 워드프레스로 아래 내용을 이전 가능합니다.

  • Contents(이미지 제외한),
  • 이미지,
  • 조회수,
  • 댓글,
  • 태그,
  • 회원정보등

저는 Contents(이미지 제외한), 이미지, 조회수까지 이전하고 나머지 중 태그는 노가다로 다시 입력을 했습니다.(이거 노가다로 태그를 다시 입력하다가 죽는 줄 알았음)
그리고 회원이전은 포기했습니다. 회원은 대부분 스팸성 회원들이라서 애착이 없었기도하고 능력으로는 쉽지가 않았습니다.

회원정보등 많은 (어쩌면 필수가 아닌 내용들을 빼다보니) 이전후 DB 용량은 XE에서 400mb에 달하던 DB 용량이 40mb로 크기가 확 줄어들었습니다.

3. XE에서 워드프레스로 이전

아래에서는 각 내용별로 어떻게 이전을 시켰느지 그 삽질기를 간략히 정리해 봅니다.

3.1. 문서 이동

첫번째로 문서를 이동해 봅니다.

문서에 해당하는 DB 이름은 XE는 xe_documents이고 워드프레스는 wp_posts이니 이를 insert into를 사용해 옮깁니다.

쿼리식은 아래와 같습니다.

insert into wp_posts (id, post_author, post_date, post_date_gmt,post_content,post_title,comment_count) select document_srl, nick_name, regdate, last_update, content,title,comment_count from xe_documents

위 SQL 쿼리문은 큰 문제없이 적용되어 성공적으로 데이타를 이전할 수 있었습니다.

[참조]글제목은 데이타를 이전해도 제대로 생성이 안됩니다.

워드프레스로 이전해서 사용하다보면 아시겠지만 워드프레스에는 고유주소라는 개념이 있습니다.

주소를 어떤 형식으로 보여주느냐에 대한 정의인데 워드프레스에서는 SEO를 중시하므로 글제목으로 주소를 만드는 경우가 많습니다. 일반적으로 티스토리나 XE에서는 문서 고유 넘버를 많이 사용합니다.

이 글 제목은 post_name에서 가져오는데 이 형식은 %EC%86%8C%EC%84%A4같은 형태를 되어 있어서 title을 인코딩해줘야 한다고 합니다. 그렇지않은 상태에서는 워드프레스의 글제목으로 제대로 인식을 못하더군요.

저는 이걸 SQL 쿼리를 사아요해 해결할 수가 없어서 (워드프레스에서 고유주소를 글제목으로 설정한 후) 글제목일 형성되도록 일일히 문서를 불러오고 저장해(이러게 새로 저장하면 자동으로 워드프레스에서 글제목이 형성됩니다) 글 제목 고유 주소가 생성되도록 했습니다.

이를 하려면 워드프레스 관리패널에서 문서를 불러와 새롭게 저장해주면 (워드프레스에서는 업데이트라고 부릅니다.) 자동으로 생성됩니다.
그러나 천개 이상의 글을 새로 저장하는 것은 쉬운 일은 아니지요.
그나마 워드프레스에서는 빠른편집기능이 있어서 조금은 쉽게 할 수 있었습니다. 솔직히 거의 15시간이상 노가다를 했고 쓴물이 나온다는 표현을 이해할 정도로 하기 싫은 일이었습니다. 엄청난 삽질입니다.

혹 실력자분이 계시면 이를 변환해주는 쿼리문을 공유해주면 좋을 것 같네요.

3.2. 문서별 조회수 이동

두전째로 조회수를 이전해 봅니다.

그런데 WordPress에는 워드프레스 자체적으로 제공하는 조회수 기능이 없다고 합니다.

워드프레스에서 조회수를 보려면 먼저 조회수를 표시해주는 플로그인을 설치하고 이 플러그인 DB에 데이타를 이전시켜야 합니다.

저는 디자인 떼문에 다른 조회수 플러그인을 적용했는데 잘 이전되지 않아서 Nickspace에서 소개한 “Page Views Count”를 설치 했습니다. 이 경우는 잘 이전이 되더군요.

쿼리식은 아래와 같습니다.

insert into wp_pvc_total (postnum,postcount) select document_srl,readed_count from xe_documents

이 플러그인은 무조건 컨텐츠 하단부에 위치시키는 것 같더군요. 가능하면 위에서 보여주고 싶었는데 방법을 찾지를 못했습니다.

[참조] 포스팅 후 추가 한 내용

“Page Views Count”를 시용하면서 카운터의 위치를 상단으로 위치시키는 방법에 대해서는 hackYa님께서 댓글로 알려주셨는데요.

테마의 style.css에서 CSS코드를 변경해 적용할 수 있다고 합니다.

style.css에서 아래 css code를 추가합니다.

>pvc_stats {
>position: absolute;
>top: 14em;
> }`

3.3. 댓글 이동

세번째로 댓글을 이전해 봅니다.

댓글은 XE의 xe_comments에서 워드프레스의 wp_comments로 이전합니다.

여기서는 별다른 어려움은 없었습니다.

쿼리식은 아래와 같습니다.

insert into wp_comments(comment_ID, comment_post_id, comment_author, comment_author_email,comment_author_IP, comment_author_url, comment_date, comment_date_gmt,comment_content) select comment_srl, document_srl, nick_name, email_address,ipaddress, homepage, regdate, last_update, content from xe_comments

댓글시스템은 워드프레스에서 제공하는 것을 사용해도 되고 Disqus와 같은 댓글전문 플로그인을 사용하는 방법도 있습니다. 아니면 페이스북 댓글을 달 수도 있습니다.

[참조] 포스팅 후 추가 한 내용

위에서 설명한대로 댓글시스템은 워드프레스 자체에서 제공하는 것으루 사용해도 되고
다른 사설 댓글 시스템을 사용할 수도 있습니다. 이 중 대표적인 게 소셜 연동 댓글 시스템인 DISQUS라고 하네요.(아래 댓글에서 hackYa님께서 알려주심 ) 설치를 설치해 사용할 수 있습니다.

Disqus Comments System 사용하면 아래와 같은 장점이 있습니다.

  • 다양한 소셜계정으로 로그인이 가능합니다. 이 소셜계정으로 로그인은 페이스북, 구글 등의 계정을 이용해 로그인하는 것으로 별도로 가입할 필요가 없고 상대적으로 보안에 유리합니다. 그리고 사이트 운영 측면에서 보안의 책임을 소셜계정으로 넘긴다고 할 수 있으므로 운영 측면에서 메리트가 있습니다.
  • Disqus 자체로 다른 사용자들의 웹사이트 방문이 가능토록 되어 있어 Disqus를 통해서 유저가 유입될 수 있습니다.
  • Disqus 댓글시스템을 설치한 블로그에서 댓글을 달면 관련 댓글은 모두 한곳에서 관리 가능합니다. 이게 사용자룟 는 큰 메리트 중의 하나일 듯 싶습니다. 물론 별 생각없이 아무 사이트나 Guest로 댓글을 남긴다면 무용지물이지만요.
  • 댓글에서 동영상을 비롯한 다양한 미디어를 쉽게 자유롭게 붙일 수 있습니다. 이를 지원하는 댓글시스템이 많으니 꼭 Disqus만의 장점은 아닐 수 있겠네요.

단점은 아래 두가지를 들고 싶네요.

  • 약간의 로딩 시간이 필요해 조금 늦어진다고 합니다.
  • 다른 댓글시스템으로 이동하는데 어느정도 장애가 있습니다. 뭐 이는 무슨 댓글을 써도 마찬가지지만요. 저도 기존 댓글시스템에서 Disqus로 이전하는데 문제가 있어서 옮겨지지 않고 있습니다.

3.4. 이미지 주소 변경

제일 덩치가 큰게 이미지 파일입니다.
이미지 파일 폴더 위치를옮기면 이를 다시 matching하는데 무리가 많이 따른다는 지적에 따라 현재 이미지 폴더 위치를 유지하기로 했습니다. 이미지 폴더를 유지하고 나머지 XE관련 파일 및 폴더들을 전부 삭제하는 것입니다.

이미지 폴더를 옮기지 않는다면 절대주소로 변경해 주어야 합니다. XE와 워드프레스가 참조하는 기본 위치가 다르므로 상대주소를 유지하는 경우 엑박이 뜹니다.

저는 지난해 7월부터는 하루패드를 이용해 포스팅을 하면서 절대 주소를 사용해왔으며
지난해 6월부터는 호스팅사를 이동하면서 XE설치 위치를 https://happist.com/zbxe/에서 https://happist.com/으로 변경했습니다.

저는 지난해 7월부터는 하루패드를 이용해 포스팅을 하면서 절대 주소를 사용해왔으며
지난해 6월부터는 호스팅사를 이동하면서 XE설치 위치를 https://happist.com/zbxe/에서 https://happist.com/으로 변경했습니다.

이렇게 변화를 주다보니 사이트내 이미지를 불러오는 주소가 아래처럼 3가지 타입이 있었습니다.
이 기회에 세번째 방식으로 일원화시켜 명확화해주도록 했습니다.
어짜피 첫째와 둘째 방식은 작동하지 않으므로

방식1, src="files/attach/images
방식2, src="https://happist.com/zbxe/files/attach/images
방식3, src="https://happist.com/files/attach/images

따라 첫째와 둘째에 해당하는 경우는 각각 아래와 같은 쿼리문을 써서 일원화 시켰습니다.

UPDATE wp_posts SET post_content = replace(post_content, 'src="files/attach/images', 'src="https://happist.com/files/attach/images');

UPDATE wp_posts SET post_content = replace(post_content, 'src="https://happist.com/zbxe/files/attach/images', 'src="https://happist.com/files/attach/images');
▽ 절대주소로 변경하기 위해 쿼리문을 실행 시킨 후 성공했다는 메세지를 보여주고 있다.

절대주소 변경1

절대주소 변경2

3.5. 내부 링크 주소 변경 또는 리다이렉트

추가로 포스팅 곳곳에 연결해 놓았던 내부 링크를 변경해야 합니다.
내부 링크를 따로 해놓은 것이 없다면 이 장은 필요하지 않습니다.

내부링크를 시키다보니 다양한 형태의 주소가 있습니다.
이것을 수정하지말고 리다이렉트 시키는게 좋을 것 같은데.. 리다이렉트가 생각보다 잘 먹히지 않더군요.. 그건 여기 저기 문의해서 알아보고 있는 중입니다. 후에 해결책을 찾으면 업데이트 하도록 하겠습니다.

예를 들면 아래와 같은 주소들은 워드프레스 체계하에서는 제 주소를 찾아갈 수 없습니다. 그냥 홈화면으로 가버리죠..
https://happist.com/index.php?document_srl=538631
https://happist.com/zbxe/index.php?document_srl=538631
https://happist.com/zbxe/index.php?mid=Case&document_srl=521085
https://happist.com/index.php?mid=Case&page=2&document_srl=521181
https://happist.com/index.php?mid=Ad&document_srl=532357
https://happist.com/index.php?mid=Marketer&document_srl=532357
https://happist.com/index.php?mid=Landscape&document_srl=528582

https://happist.com/index.php?document_srl=528147&mid=Photo_essay 인 경우는 &mid=Photo_essay" 를 수정해 주어야 한다.
https://happist.com/index.php?mid=Landscape&document_srl=528582

https://happist.com/index.php?document_srl=544433

위를 해결하기 위해서 아래 쿼리문을 적용해서 변경해줍니다.

UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/index.php?document_srl=', 'https://happist.com/?p=');
UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/zbxe/index.php?document_srl=', 'https://happist.com/?p=');
UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/zbxe/index.php?mid=Case&document_srl=', 'https://happist.com/?p=');
UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/index.php?mid=Case&page=2&document_srl=', 'https://happist.com/?p=');
UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/index.php?mid=Ad&document_srl=', 'https://happist.com/?p=');
UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/index.php?mid=Marketer&document_srl=', 'https://happist.com/?p=');
UPDATE wp_posts SET post_content = replace(post_content, '&mid=Photo_essay"', '"');
UPDATE wp_posts SET post_content = replace(post_content, 'https://happist.com/index.php?mid=Landscape&document_srl=', 'https://happist.com/?p=');

[^]: 마이스토리의 글은 http://my.blogkor.com/976638 여기를 참조하세요.
[^]: Nickspace의 글은 http://nickspace.cn/wp/ 여기를 참조하세요

[참고]CMS(XE,워드프레스) 관련 이런 저런 이야기

[Tips]나눔고딕을 가장 효율적으로 적용하는 방법

XE에서 워드프레스로 이전하기

XE에서 워드프레스로 이전 후 느끼는 장단점 정리

XE에서 워드프레스 이전 후 이미지 최적화를 위한 이미지 변환 프로그램 비교

[워드프로세스 Tips]테마를 DB에서 수동으로 변경하기 (How to change WordPress Thems from the DB)

XE에서 워드프레스로 이전하기 was last modified: 12월 4th, 2017 by happist
  • style.css 여시고,

    https://happist.com/wp-content/themes/colormag/style.css?ver=4.5.3

    .pvc_stats {
    position: absolute;
    top: 14em;
    }

    이렇게 css 를 넣어주시면, 원하시는데로 조회수 가 문서 상당에서 표시됩니다.

    그리고 301 Redirect 플러그인 작동 잘 되는 플러그인 입니다. 어쩌면 사용미숙 (사용방법을 잘 모르셔서) 일수도 있습니다.

    그런데 구글에서는 301 Redirect 하지 않아도 된다고/필요 없다고도 말합니다.

    Disqus 댓글 플러그인을 다시면 사람들이 편하게 댓글을 달수 있어서 워드프레스 커뮤니티내에서는 거의다 Disqus 댓글 을 사용합니다. SEO 에도 도움을 줍니다.

    conversion up, SEO up, 이렇게 두가지 잇점이 있습니다.

    • Happist

      안녕하세요?

      알려주셔서 고맙습니다.

      1. style.css는 수정했습니다.
      2. Disqus 댓글 시스템을 설치를 했습니다. XE 시절엔 예전부터 스팸 공격으로 댓글과 트랙백을 닫고 살았었는데 이 쪽 동네는 댓글이 많이 활성화되는 것 같네요. 워드프레스 자체가 공유를 지향하고 트렌드가 그러하니 당연한 것 같습니다.
      3. 301 Redirect는 설정에 큰 어려움은 없는데 제가 모르는 다른 설저이 있는지 모르겠습니다. 거의 5일을 밤새워 여기에 매달렸는데 결국 실패한 셈이되어 허탈하고 마음을 비워야 할것 같습니다.

    • 추가적으로 조회수 표여주는 위치를 윌로 올리기 위해서 적용해보니
      1. IE계열은 변동이 없습니다.
      2. 크롬에서는 위로 올라오는데 슬라이더 등등과 충돌나는 것 같습니다.
      위와같은 연유로 그 코드는 삭제했습니다.
      좋은 의견을 주셨는데 적용하지못해 아쉽습니다.

  • 상당 -> 상단.

    허거걱. 댓글 수정이 불가능 하네요. ㅠㅠㅠㅠ

    • 네,
      아시는 것처럼 워드프레스 기본 댓글은 수정 및 삭제 기능이 없다고 하네요.
      하나씩 배워가는데 워드프레스 자체 댓글을 그냥 쓰는 것은 여러모로 불편할 것 같네요
      님이 추천한대로 Disqus comment System을 설치했어요.
      그런데 한국에는 livere라는 서비스가 있던데 혹 아세요?
      나름 괜찮아보이던데 아쉽게도 워드프레스 플로그인은 없네요

  • https://happist.com/wp-content/themes/colormag/%E2%80%9C/Font/NanumBarunGothicBold.eot

    나눔바른고딕 eot 폰트가 링크가 잘못 지정되어서 제대로 표시되지 않고 있습니다.


    • 여러곳에서 테스트를 해보고 있는데 어디서 문제가 발생하는 지 알려주시면 좋겠습니다.
      제가 가진 2대의 PC와 노트북에서는 정상적으로 나옵니다.
      그리고 어떻게 Test해야하는지 알 수 있을까요?
      전 화면에 그 글골이 뿌려지면 적용되었다고 알고있긴 합니다만..
      혹시 몰라서 폰트 주소를 절대주소로 바꾸었습니다.

  • Disqus 댓글 시스템을 달았는데 이전 댓글 이전에 문제가 있네요.
    그래서 여기에 사정을 간략히 설명하고 댓글 최종 답변을 남깁니다.

    hackYa님께

    안녕하세요

    1. style.css는 수정했습니다..알려주셔서 고맙습니다.

    2. Disqus 댓글 시스템을 설치를 했습니다. XE 시절엔 예전부터 스팸 공격으로 댓글과 트랙백을 닫고 살았었는데 이 쪽 동네는 댓글이 많이 활성화되는 것 같네요. 워드프레스 자체가 공유를 지향하고 트렌드가 그러하니 당연한 것 같습니다.
    다만 Disqus로 기존 댓글이 이전 시 중간에 에러를 뿜어냅니다. 뭐가 문제인지 모르겠네요.. php 7을 쓰면서 db 연동이 원활하지 않은 ㄴ것인지 모르겠습니다. php 7과 하위 버젼과의 괴리가 조금 있다고는 들었는데.

    3. 301 Redirect는 설정에 큰 어려움은 없는데 제가 모르는 다른 설저이 있는지 모르겠습니다. 거의 5일을 밤새워 여기에 매달렸는데 결국 실패한 셈이되어 허탈하고 마음을 비워야 할것 같습니다.

    • 제가 쓰고 답을 하게 됩니다.

      Disqus export를 여러번 시도하니 어느 순간 엄청난 시간이 걸리긴 했지만 결국 성공을 하네요. 그래서 중복이 되긴 했습니다만 남겨두기로해서 여기에 스스로 답을 답니다.

  • 좋은 정보 감사합니다. 홈페이지가 깔끔하고 좋네요^^

    • 감사합니다.
      1. 다시 읽어보니 글을 더 정리해야겠다는 생각이 듭니다.
      시간을 내서 좀 더 체계적으로 초심자도 잘 알수 있도록 정리해 보려고 합니다.
      2. 테마를 nespaper용으로 고르다보니 전체적으로 복잡한 것 같습니다.
      어리석은 마음에 이 주제 저 주제를 모두 노출하고 싶어서 복잡하게 했는데
      조금은 정리하려고 합니다.
      3. 좋게 봐주시어 감사합니다.

      • 사이트의 테마가 바뀌었네요. 이전보다 조금 더 정리된 느낌이 드네요. (이전처럼 전면 페이지(첫 페이지)에 많은 콘텐츠가 나열되어 있네요…)

        • 관심 감사합니다. 넘 늦게 답을 다네요..

          사이트 테마는 여러가지 테스트를 하고 있습니다.

          블로그테마로 시작하다보니 오랬동안 이런 방식으로 메인에 많은 정보를 주는게 당연하다는 생각을 햇는데요. 님 말씀대로 다른 방안에 대해서 고민을 많이 해보려구요..

          1. 테마를 선택하면 서 복잡하겠다는 생각을 했는데 다른 기능에 혹해서리..선택했는데 역시 문제여ㅕㅆ네요.

          2. 홈에서 글을 카테고리별로 글을 소개하는 게 좋겠다는 생각을 했는데 다른 대안에 대해서 고민해보려구요..

          글의 주제를 줄이면 자연스레 간결해질것으로 보입니다.
          마케팅 관련글, iOt, 사진 등등 산만한 주제를 2~3개정도로
          줄이려고 합니다.

          고맙습니다.

  • Pingback: Wix 사용 시 네이버 웹마스터에 사이트맵과 RSS 제출하기()

  • Pingback: CMS 점유율과 워드프레스 이전 서비스()

  • post_title을 인코딩하려고 시도했지만 syntax 문제인지 제가 사용하는 웹호스팅 서버 문제인지 제대로 작동하지 않고 오류를 내네요.(오류 메시지의 의미는 웹호스팅에서 지원이 안 되어서 그렇다고 하지만 syntax 오류도 의심되기도 하고요…)

  • 글 제목을 글 slug로 복사했을 때 깨지는 문제를 해결하는 코드를 하나 작성했습니다.

    포기하고 있었는데 오늘 갑자기 방법이 생각이 났습니다.ㅎㅎ

    http://www.thewordcracker.com/intermediate/xe%EC%97%90%EC%84%9C-%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4%EB%A1%9C-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%ED%95%98%EA%B8%B0/ 글의 “글 슬러그가 깨지는 문제” 부분의 코드를 사용하면 잘 될 것입니다.

    • 감사합니다.

      함 시도해 볼께요…

  • Pingback: XE에서 워드프레스로 마이그레이션하기 - 워드프레스 중급()

  • tuna

    안녕하세요.

    같은 생각으로 워드프레스로 이전을 결심하고, 덕분에 XE에서 워드프레스로 잘 이전했습니다.
    이번에 블로그에 XE에서 워드프레스로 이전과 관련한 자료를 소개하면서 이 글을 인용하고 싶은데 가능할까요? 미리 감사드립니다.

    • 네 안녕하세요?

      잘 이전했다니 축하드립니다. 사이트가 크게 번성하길 기원하겠습니다.
      제가 조금이라도 도움이 되었다니 기쁘네요.

      인용은 출처표시해주신다면 저야 영광이죠…

      • 응답해주셔서 감사합니다.
        말씀하신대로 인용은 출처를 남기도록 하겠습니다.

        즐거운 주말되세요 🙂

  • Pingback: 홈페이지에 대한 추억 그리고 이메일마케팅을 다시 시작하는 이유 | 꿈꾸는섬()

  • Pingback: 가성비가 뛰어난 Vultr 가상서버호스팅(클라우드호스팅,VPS) 사용기 | 꿈꾸는섬()