티스토리 백업본을 다운로드하여 워드프레스에서 HTML Import 2 플러그인을 사용하여 티스토리 블로그 콘텐츠를 임포트할 수 있습니다.
이 플러그인을 사용하여 이전할 경우 카테고리를 가져오는 옵션은 없습니다. 대신 커스텀 필드(사용자 정의 필드)로 매핑하여 사용자 정의 필드 값을 카테고리로 지정하는 방법을 고려할 수 있습니다.
티스토리에서 워드프레스 이전 시 카테고리 매핑 방법
HTML Import 2 플러그인을 사용하는 경우 Categories & Tags 탭에서 모든 글을 동일 카테고리로 지정할 수 있는 옵션이 제공됩니다.
하지만 블로그에 여러 개의 카테고리가 사용될 수 있습니다. 이 경우 Custom Fields 탭에서 카테고리를 커스텀 필드로 지정할 수 있습니다.
위의 그림과 같이 설정하도록 합니다.
- Custom field name: category (다른 이름으로 설정 가능)
- Select filed by: HTML tag
- Tag: p
- Attribute: class
- = Value: category
상기와 같이 커스텀 필드를 추가한 다음, 파일을 임포트하면 개별 글의 커스텀 필드에 카테고리 커스텀 필드가 표시됩니다. (참고로 여러 개의 커스텀 필드를 추가하려고 시도해 보았지만, 플러그인이 오래전에 만들어져서 업데이트가 안 되어서 그런지 두 개 이상의 커스텀 필드는 추가가 안 되는 것 같습니다.)
개별 포스트 편집 화면에서 사용자 정의 필드 패널이 표시되지 않으면 환경 설정에서 사용자 정의 필드 패널을 활성화하시기 바랍니다.
이제 테마(차일드 테마를 만들어 작업하세요) 함수 파일에 다음 코드를 추가합니다.
function update_post_category_based_on_custom_field( $post_id ) {
// Check if this is a valid post. Avoids running on save of revisions.
if ( !wp_is_post_revision( $post_id ) ) {
// Get the value of the custom field 'category'.
$custom_field_value = get_post_meta( $post_id, 'category', true );
// If the custom field value is not empty, update the post's category.
if ( !empty( $custom_field_value ) ) {
// Convert custom field value to a slug (lowercase, replace spaces with hyphens)
$category_slug = sanitize_title( $custom_field_value );
// Update the post's category.
wp_set_object_terms( $post_id, $category_slug, 'category', false );
}
}
}
add_action( 'save_post', 'update_post_category_based_on_custom_field' );
위의 코드를 추가한 경우, 글을 업데이트하면 category 커스텀 필드 값이 해당 글의 카테고리로 지정됩니다. 모든 글을 업데이트한 후에 카테고리가 지정되면 위의 코드를 삭제할 수 있습니다.
위의 작업을 수행하기 전에 반드시 백업을 철저히 하시기 바랍니다. 만약 문제가 있다면 백업본을 사용하여 되돌릴 수 있습니다.
참고로 이전 작업이 완료된 후에는 ftp/sftp로 업로드한 티스토리 백업 파일에서 html 파일은 삭제할 수 있습니다. SSH에 접속하여 다음 명령을 실행하여 해당 디렉터리(예: tistory) 내의 모든 Html 파일을 삭제하는 것이 가능합니다.
find . -type f -name "*.html" -delete
HTML Import 2 플러그인은 오랫동안 업데이트가 안 되었지만, 최신 워드프레스 버전에서 아직 잘 작동하는 것 같습니다. 티스토리에서 워드프레스로 이전하려는 경우 이 글을 참고하시기 바랍니다.
티스토리 블로그에서 자체 동영상을 업로드한 경우 이전 시에 에러가 발생할 수 있습니다. 그런 경우 파일을 임포트하기 전에 iframe 태그를 제거한 후에 임포트를 실시해야 올바르게 임포트가 됩니다.
예시:
찾기
.*<iframe[^>]*src="([^"]+)"[^>]*>.*<\/iframe>.*
바꾸기
$1
임포트 후에는 JavaScript를 사용하여 동영상을 표시할 수 있습니다.
// Select all elements with the class 'iframe-wrap'
var iframeWraps = document.querySelectorAll('.iframe-wrap');
// Loop through each element
iframeWraps.forEach(function(iframeWrap) {
// Get the URL from the text content of the element
var url = iframeWrap.textContent.trim();
// Create a new iframe element
var iframe = document.createElement('iframe');
// Set the attributes of the iframe
iframe.setAttribute('width', '640');
iframe.setAttribute('height', '360');
iframe.setAttribute('src', url);
iframe.setAttribute('frameborder', '0');
iframe.setAttribute('scrolling', 'no');
iframe.setAttribute('allowfullscreen', '');
// Clear the content of the iframeWrap element
iframeWrap.textContent = '';
// Append the iframe to the iframeWrap element
iframeWrap.appendChild(iframe);
});
하지만 티스토리에서 업로드한 동영상은 외부에서 임베드하면 비공개 동영상으로 표시되면서 재생이 되지 않도록 차단된 것 같습니다.
티스토리에서 동영상을 별도로 다운로드하여 유튜브에 업로드한 후에 워드프레스에 삽입할 수 있습니다.
참고
https://avada.tistory.com/3046
https://avada.tistory.com/2897
https://avada.tistory.com/2299