한 블로그에서 다른 블로그로 모든 Wordpress 범주 (게시물이 아닌 범주 만)를 내보내고 싶습니다. 어떻게해야합니까?
한 블로그에서 다른 블로그로 모든 Wordpress 범주 (게시물이 아닌 범주 만)를 내보내고 싶습니다. 어떻게해야합니까?
답변:
이 답변은 본질적으로 Ünsal의 답변과 동일하지만 그의 답변이 도움이되지 않았기 때문에 조금 자세히 설명하고 싶습니다. (나는 과거에 한 일을 기억하려고 노력했지만 더 신중하게 알아 냈지만 다른 사람들에게는 전체 설명이 유용 할 것이라고 생각합니다.
전체 카테고리 계층 구조를 내보내려면 "모든 컨텐츠"를 내 보내야합니다.
다른 옵션은 전체 데이터를 제공하지 않습니다 (예 : 모든 카테고리로 태그가 지정된 게시물을 내 보내면 대부분 작동하지만 계층 적 분류법에 대한 모든 상위 / 계층 데이터는 손실 됨).
"모든 컨텐츠"를 내 보내면 결과 파일에 용어에 대한 데이터가있는 섹션이 있습니다. 파일을 살펴보면 저자 나 "항목"(즉, 게시물) 전에 쉽게 찾을 수 있어야합니다.
옵션 인 경우 가져 오기만하고 콘텐츠를 삭제할 수 있습니다 *
전체 파일을 가져 오면 분류 체계가 완벽하게 복제되지만 모든 페이지와 게시물도 가져옵니다. 너무 많은 것이 없다면 손으로 삭제하는 것을 고려하십시오. 일괄 처리하고 수백 개 미만인 경우 시간이 오래 걸리지 않습니다 (게시물 편집 화면에서 화면 옵션을 사용하여 기본값보다 더 많이 표시하여 한 번에 대량 편집 할 수 있음을 기억하십시오).
내용을 모두 제거 할 내용이 너무 많으면 WXR 파일을 직접 편집하여 유지하려는 용어 이외의 모든 항목을 제거해야합니다.
컨텐츠를 제거하기 위해 WXR 파일 편집
이것은 약간 까다로울 수 있지만 실제로 파일의 내용을 보면 각 요소가 무엇을하는지 알아내는 것이 어렵지 않습니다. XML은 태그가있는 HTML과 유사하므로주의해야 할 것은 여는 태그를 남기는 동안 닫는 태그를 삭제하지 않는 것입니다.
WXR에는 1-3 가지 유형의 용어 정의가 있으며, 하나는 범주, 하나는 "태그", 다른 하나는 "용어"입니다. "맞춤 분류법"은 구식 범주와 태그에 고유 한 특수 형식이있는 반면 용어를 사용합니다.
카테고리 예
<wp:category><wp:term_id>8880</wp:term_id><wp:category_nicename>runner-up-proposals</wp:category_nicename><wp:category_parent>second-round-proposals</wp:category_parent><wp:cat_name><![CDATA[Runner-up Proposals]]></wp:cat_name></wp:category>
태그 예
<wp:tag><wp:term_id>122</wp:term_id><wp:tag_slug>ave-maria</wp:tag_slug><wp:tag_name><![CDATA[Ave Maria]]></wp:tag_name></wp:tag>
커스텀 세금 기간 예시
<wp:term><wp:term_id>8579</wp:term_id><wp:term_taxonomy>gv_tools</wp:term_taxonomy><wp:term_slug>digital-video</wp:term_slug><wp:term_parent></wp:term_parent><wp:term_name><![CDATA[Digital Video]]></wp:term_name></wp:term>
따라서 WXR 파일에서 이러한 카테고리 / 태그 / 용어 태그 이외의 모든 컨텐츠를 제거해야합니다. 즉, wp : 작성자 태그와 다음에 오는 많은 항목 태그입니다. 가장 중요한 것은 하단의 닫는 / channel 및 / rss 태그를 제거하지 마십시오! 그것들이 없으면 XML은 유효성을 검사하지 않습니다.
명백히 라이브 웹 사이트에서 사용하기 전에 편집 한 파일을 가져 오는 결과를 테스트합니다. 로컬로 새로 설치하여 가져 와서 완전히 실패했는지 확인한 다음 wp-admin에서 카테고리 목록 화면을 확인하고 모든 것이 예상 한대로되어 있는지 확인하십시오.
행운을 빕니다!
나는 2 개의 쿼리 로이 문제를 해결했다.
이것이 내가 생각하는 가장 좋은 방법은 아니지만 가장 안전한 방법은 아닙니다 . 또한 동일한 데이터베이스에서 작업하고 있다고 가정합니다 (그렇지 않은 경우 쿼리를 쉽게 내 보낸 다음 다른 db로 가져올 수 있음).
빈 워드 프레스 설치 에서 사용했습니다 .
1-카테고리 용어를 가져옵니다.
INSERT INTO newwp_terms
SELECT te.*
FROM oldwp_terms te
JOIN oldwp_term_taxonomy ta
ON te.term_id = ta.term_id
WHERE ta.taxonomy = 'category'
;
2-카테고리 관계 및 설명 가져 오기
INSERT INTO newwp_term_taxonomy
SELECT term_taxonomy_id,term_id,taxonomy,description,parent,0
FROM oldwp_term_taxonomy ta
WHERE ta.term_taxonomy_id IN
(
SELECT ta2.term_taxonomy_id
FROM oldwp_terms te
JOIN oldwp_term_taxonomy ta2
ON te.term_id = ta2.term_id
WHERE ta.taxonomy = 'category'
)
;
[A] nyway newwp_
는 가져올 oldwp_
테이블 을 나타내며 소스 테이블 을 나타냅니다.