날씨위젯
최종편집 2025.01.17 (금)
기사입력시간 2025년 01월 13일 19시 08분 / 글수정 / 글삭제
  1. function.php
function get_mangboard_all_recent_posts($post_count = 10) {
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"]
로그인하세요.