back to top
-0.5 C
New York
금요일, 12월 27, 2024

Buy now

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

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)

spot_img

Latest articles

Related articles

spot_img