워드프레스에서 제목에 특정 키워드가 포함된 글 제목 추출하기

워드프레스 정보를 제공하는 블로그 Avada 2021. 10. 2. 13:03 • 댓글:

발행한 글 중에서 제목에 특정 키워드가 포함된 모든 글들의 제목을 추출하고 싶은 경우가 있을 수 있습니다. 예를 들어, 글 개수가 10000개가 넘는 사이트에서 특정 단어나 문구가 포함된 모든 글을 엑셀 형식으로 추출하고 싶은 경우 MySQL 쿼리를 통해 글 제목 리스트를 추출할 수 있습니다.

워드프레스에서 제목에 특정 키워드가 포함된 글 제목 추출하기

여러 가지 방법이 있을 수 있는데, MySQL 쿼리를 통해 특정 조건에 해당하는 글 제목을 추추할 수 있습니다. MySQL 문법에 대해 잘 모르는 경우 wpDataTables 플러그인을 사용하면 정교하게 조건을 만들어 MySQL 쿼리문을 만들 수 있습니다.

이 플러그인은 특히 DB 작업이 빈번한 사용자들에게 유용합니다. 가령 커스텀 테이블을 만들고 해당 테이블 데이터를 프런트엔드에 표시하고 싶은 경우 이 플러그인으로 쉽게 구현이 가능합니다.

 

워드프레스 DB의 커스텀 테이블 데이터를 프런트엔드에 표시하기

워드프레스에서 커스텀 테이블 데이터를 DB(데이터베이스)에서 끌어와서 프런트엔드에 표시하고 싶은 경우가 있습니다. 이 경우 PHP 코드를 만들어 프런트엔드에 DB 테이블을 표시할 수 있습니다

avada.tistory.com

wpDataTables는 다른 워드프레스 플러그인에 비해 가격이 비싼 편입니다. 하지만 저렴하지 않은 가격에도 불구하고 21,000개 이상 판매되었습니다.

워드프레스에서 제목에 특정 키워드가 포함된 글 제목 추출하기

저도 이 플러그인을 구입했는데요, DB 작업 시에 가끔 유용하게 활용하고 있습니다.

wpDataTables 플러그인을 사용하여 특정 키워드가 포함된 워드프레스 글 제목 추출하기

이 플러그인을 사용하여 직접 프런트엔드에 결과를 표시하고 엑셀이나 CSV로 다운로드할 수 있습니다. 또는, 플러그인을 통해 만들어진 MySQL 쿼리문을 복사하여 phpMyAdmin에서 실행할 수도 있습니다.

먼저 워드프레스 알림판에서 wpDataTables > Create a Table을 클릭하고 Generate a query to the WordPress database를 선택합니다.

커스텀 테이블에서 작업하는 경우에는 Generate a query to the MySQL database를 선택할 수 있습니다.

표시할 DB 테이블 데이터를 선택하고 아래의 Add condition을 클릭하여 조건을 추가합니다.

예를 들어, 제목에 '플러그인'이라는 단어가 포함되고 글 상태가 '공개'인 글 목록을 추출하려는 경우 다음과 같이 조건을 지정할 수 있습니다.

조건은 다양하게 지정이 가능합니다. 예를 들어, 특정 날짜 이전 또는 특정 날짜 이후의 글만을 추출하는 것도 가능합니다. 위의 예시에서, '플러그인' 대신 '워드프레스 프러그인'처럼 두 단어 이상의 문구로도 지정할 수 있습니다.

하단의 Next를 클릭합니다.

그러면 결과를 미리 볼 수 있습니다. 기대한 결과를 출력하지 않는 경우에는 Previous 버튼을 눌러 이전 페이지로 돌아가서 다시 조건을 지정하도록 합니다.

이 미리보기 페이지에서는 MySQL 쿼리문도 확인할 수 있습니다.

제목에 특정 키워드가 들어가는 발행된 모든 글 제목을 추출하려면 다음과 같은 MySQL 쿼리문을 이용할 수 있습니다.

// Extract WordPress Posts titles with a specific keyword
SELECT posts_post.ID AS post_ID,
       posts_post.post_date AS post_post_date,
       posts_post.post_title AS post_post_title,
       CONCAT('<a href="',posts_post.guid,'">',posts_post.post_title,'</a>') AS post_title_with_link_to_post
FROM wp_posts AS posts_post
WHERE 1=1
   AND posts_post.post_title LIKE '%YOUR_KEYWORD_HERE%'
   AND posts_post.post_status = 'publish'
   AND posts_post.post_type = 'post'

상황에 맞게 위의 코드를 적절히 응용하시기 바랍니다.

Create the table 버튼을 클릭하면 테이블(표)이 생성됩니다.

숏코드를 복사하여 해당 결과를 표시할 페이지에 붙여넣기 하도록 합니다.

프런트엔드에서 결과를 확인할 수 있습니다.

Excel, CSV 아이콘을 클릭하여 엑셀이나 CSV 파일로 결과를 저장할 수 있습니다.

PHP로 DB 데이터를 추출하여 표시하기

PHP로 DB 데이터를 추출하여 표시할 수 있습니다. 다음은 특정 단어가 포함된 글 목록을 표시하는 코드 예시입니다.

<?php
$query = new WP_Query( 's=keyword' );

if ($query->have_posts()){
  while ( $query->have_posts() ) { $query->the_post();
    echo '<h2>';
      the_title();
    echo '</h2>';
    the_content();
  } //end while
}

출처: Find all Wordpress posts that contain a certain word (특정 단어가 포함된 모든 워드프레스 포스트 찾기)

물론 wpDataTables를 사용하여 쉽게 본문에 특정 단어가 포함된 글 목록을 추출할 수 있습니다.

마치며

이상으로 wpDataTables 플러그인을 사용하여 특정 키워드가 포함된 워드프레스 글 목록을 추출하는 방법에 대하여 살펴보았습니다.

DB 작업이 많거나 MySQL 문법을 공부했지만 실제로 응용하는 데 어려움을 겪는 경우 이 플러그인을 유용하게 활용할 수 있습니다.

참고

https://avada.tistory.com/2397

 

워드프레스 전면 페이지의 블로그 글을 랜덤하게 표시하기

워드프레스에서 최신 글을 전면 페이지에 표시하는 경우 보통 최신 글이 상단에 표시됩니다. 글 정렬 순서를 변경하여 랜덤하게 글을 표시하고 싶은 경우가 있을 수 있습니다. 그런 경우 전면

avada.tistory.com