이 블로그에서 phpMyAdmin에서 워드프레스 글 URL을 추출하는 방법에 대하여 살펴본 적이 있습니다.
위의 글에서 소개하는 방법을 사용하면 포스트 URL을 포스트의 GUID 형식으로 나열이 가능합니다. (예: https://example.com?p=1234)
고유주소 설정에 따라 실제 글 URL은 달라질 수 있습니다. 이 블로그의 경우 https://www.thewordcracker.com/카테고리/글이름/ 형식으로 URL이 표시됩니다. 실제 글 URL 형식으로 모든 글 주소를 추출하고 싶은 경우 아래의 방법을 이용할 수 있습니다.
고유주소가 "글 이름"으로 되어 있는 경우 아래의 방법을 이용하거나 이 글 하단에 제시된 SQL 쿼리를 사용하여 글 URL을 추출할 수 있습니다. 아래의 PHP 스크립트는 고유주소 설정에 관계 없이 모든 포스트 URL을 추출할 수 있습니다.
참고로 Export All URLs 플러그인을 사용하면 쉽게 모든 URL을 내보내기 할 수 있습니다. 먼저 이 플러그인을 사용하여 추출을 시도해보시고, 에러가 발생하는 경우(예: 멀티사이트에서는 이 플러그인이 제대로 작동하지 않을 수 있습니다) 아래의 방법을 고려해보세요.
모든 워드프레스 포스트 URL 추출하기 (feat. PHP 스크립트)
워드프레스 사이트의 모든 포스트 URL을 나열하고 싶은 경우 PHP 파일을 만들어 워드프레스가 설치된 디렉터리로 업로드할 수 있습니다.
텍스트 파일을 열고 다음 코드를 복사하여 붙여넣기 합니다.
<?php
include "wp-load.php";
$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;
header('Content-type:text/plain');
foreach($posts as $post) {
switch ($post->post_type) {
case 'revision':
case 'nav_menu_item':
break;
case 'page':
$permalink = get_page_link($post->ID);
break;
case 'post':
$permalink = get_permalink($post->ID);
break;
case 'attachment':
$permalink = get_attachment_link($post->ID);
break;
default:
$permalink = get_post_permalink($post->ID);
break;
}
echo "\n{$permalink}";
//echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}";
}
?>
파일 이름을 export.php 혹은 원하는 이름으로 지정합니다.
파일을 저장하였다면 파일질라 등 FTP 클라이언트를 사용하여 FTP 서버에 접속하여 루트 폴더에 이 파일을 업로드합니다.

이제 크롬 등의 브라우저에서 https://example.com/export.php 형식으로 주소를 입력하면 모든 글 URL이 표시됩니다.

글 제목에 한글이 포함된 경우 위의 그림과 같이 인코딩된 형식으로 글 URL이 추출되기 때문에 이상한 기호로 글 주소가 표시되지만 정상입니다. 글 URL들을 복사하여 텍스트 파일이나 엑셀 파일 등에 붙여넣기할 수 있습니다.
※ 일부 웹호스팅에서는 위의 스크립트가 작동하지 않을 수도 있습니다. Cloudways에서 호스팅되는 워드프레스 사이트에서는 위의 코드를 실행 시 아무런 내용이 표시되지 않았습니다.
※ 블루호스트 VPS의 PHP 8.2 환경에서 테스트해보니 잘 작동했습니다. 작동하지 않는 경우 에러 로그를 확인하여 웹호스팅 업체에 문의해볼 수 있을 것 같습니다.
글 URL은 최신 글부터 오래된 글 순서로 나열됩니다. 만약 오래된 글부터 최신 글 순서로 정렬하고 싶은 경우에는 상기 코드를 수정할 수도 있겠지만, 엑셀을 사용하여 순서를 바꿀 수 있습니다.
EmEditor와 같은 텍스트 에디터에서는 역으로 정렬하는 기능이 제공됩니다.

오름차순 정렬, 내림차순 정렬뿐만 아니라, 무작위로 정렬(랜덤하게 정렬)하는 기능도 제공합니다.
부록: 고유주소 형식이 '글 이름'인 경우 실제 글 주소 형식으로 포스트 URL 추출하기
고유주소 설정이 /글이름/인 경우에는 다음과 같은 SQL 쿼리를 사용하여 phpMyAdmin에서 글 URL을 실제 글 주소 형식으로 추출이 가능합니다.
select concat('https://example.com/',post_name) from wp_posts where post_status='publish' and post_type='post';
고유주소 설정이 다른 형식인 경우에는 위의 코드를 사용할 수 없습니다.
위 방식으로 URL을 추출하면 끝에 슬래시(/)가 없게 됩니다. 상기 SQL 쿼리를 수정하여 끝에 슬래시를 추가해주시기 바랍니다. 그렇지 않으면 네이버 서치어드바이저에서 수집 요청 시 리디렉션된 페이지 문제로 인해 수집 제한이 될 수 있습니다.
SQL 쿼리를 수정할 수 없다면 위의 글에서 제시하는 방법(정규식 사용)으로 URL 끝에 슬래쉬를 추가할 수 있습니다.
네이버에 자동으로 URL 수집 요청을 하고 싶은 경우 윈도우 키보드 매크로 프로그램을 활용할 수 있습니다.
마치며
이상으로 PHP를 사용하여 워드프레스 포스트 URL을 모두 추출하는 방법에 대하여 살펴보았습니다. 예를 들어, 네이버 웹마스터 도구(네이버 서치 어드바이저)나 구글 서치 콘솔을 통해 페이지 수집 요청을 하려는 경우, 글 URL을 모두 추출한 다음 매크로를 만들어 수집 요청을 하면 시간과 노력을 절감할 수 있을 것입니다.
댓글 남기기