모든 워드프레스 포스트 URL 추출하기 (feat. PHP 스크립트)

이 블로그에서 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 서버에 접속하여 루트 폴더에 이 파일을 업로드합니다.

FTP를 통해 워드프레스 루트 디렉터리에 파일 업로드

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

모든 워드프레스 포스트 URL 추출하기 (feat. PHP 스크립트)

글 제목에 한글이 포함된 경우 위의 그림과 같이 인코딩된 형식으로 글 URL이 추출되기 때문에 이상한 기호로 글 주소가 표시되지만 정상입니다. 글 URL들을 복사하여 텍스트 파일이나 엑셀 파일 등에 붙여넣기할 수 있습니다.

※ 일부 웹호스팅에서는 위의 스크립트가 작동하지 않을 수도 있습니다. Cloudways에서 호스팅되는 워드프레스 사이트에서는 위의 코드를 실행 시 아무런 내용이 표시되지 않았습니다.

블루호스트 VPS의 PHP 8.2 환경에서 테스트해보니 잘 작동했습니다. 작동하지 않는 경우 에러 로그를 확인하여 웹호스팅 업체에 문의해볼 수 있을 것 같습니다.

글 URL은 최신 글부터 오래된 글 순서로 나열됩니다. 만약 오래된 글부터 최신 글 순서로 정렬하고 싶은 경우에는 상기 코드를 수정할 수도 있겠지만, 엑셀을 사용하여 순서를 바꿀 수 있습니다.

EmEditor와 같은 텍스트 에디터에서는 역으로 정렬하는 기능이 제공됩니다.

모든 워드프레스 포스트 URL 추출하기 (feat. PHP 스크립트) 2

오름차순 정렬, 내림차순 정렬뿐만 아니라, 무작위로 정렬(랜덤하게 정렬)하는 기능도 제공합니다.

부록: 고유주소 형식이 '글 이름'인 경우 실제 글 주소 형식으로 포스트 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을 모두 추출한 다음 매크로를 만들어 수집 요청을 하면 시간과 노력을 절감할 수 있을 것입니다.

참고

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.