- function.php
global $wpdb;
// 모든 테이블 목록 가져오기
$all_tables = $wpdb->get_col("SHOW TABLES LIKE 'mb_%'");
// 게시판 테이블 필터링 (댓글 테이블 제외)
$board_tables = array_filter($all_tables, function($table) {
return !preg_match('/_comment$/', $table); // 댓글 테이블 제외
});
// 게시물 가져오기 쿼리 생성
$queries = [];
foreach ($board_tables as $table) {
$queries[] = "
SELECT '{$table}' AS table_name, id, title, regdate
FROM {$table}
ORDER BY regdate DESC
LIMIT {$post_count}
";
}
// 게시물 데이터 가져오기
$final_query = implode(" UNION ALL ", $queries) . " ORDER BY regdate DESC LIMIT {$post_count}";
$results = $wpdb->get_results($final_query);
// 게시물 출력
$output = '<ul class="mangboard-all-recent-posts">';
if (!empty($results)) {
foreach ($results as $post) {
$table_name = esc_html($post->table_name);
$title = esc_html($post->title);
$regdate = esc_html($post->regdate);
$url = esc_url(home_url("/mangboard/view?table={$table_name}&id={$post->id}"));
$output .= "<li><a href='{$url}'>{$title} ({$regdate})</a></li>";
}
} else {
$output .= '<li>No recent posts found.</li>';
}
$output .= '</ul>';
return $output;
}
2. 숏코드
function mangboard_all_recent_posts_shortcode($atts) {
// 숏코드 속성 정의 (기본값: 최근 10개 게시물)
$atts = shortcode_atts(
array(
'count' => 10, // 출력할 게시물 수
),
$atts,
'mangboard_recent_posts'
);
// PHP 함수 호출
return get_mangboard_all_recent_posts(intval($atts['count']));
}
// 숏코드 등록
add_shortcode('mangboard_recent_posts', 'mangboard_all_recent_posts_shortcode');
3. 숏코드
[mangboard_recent_posts count="5"]