chart.js 이용해서 테이블 값을 그래프로 표현하는 코드임
바, 선, 원형 등 다양한 그래프로 표현 가능함

매출액 (만원)
1월250
2월320
3월280
4월450
5월390

예를들어 1월-12월까지 매출을 입력하면 그래프로 표기되는걸 만든다고 하면,
ACF 이용해서 포스트1-12로 입력값 받으면 그걸 테이블로 표기하고 그래프로 나타낼 수 있음

PHP: WordPress 루프를 돌려 1-12월까지의 매출액을 담은 HTML 테이블을 생성합니다.
JavaScript: 페이지 로드 후, 이미 만들어진 HTML 테이블의 데이터를 읽어와 그 값으로 그래프를 그립니다.

<div style="display: flex; gap: 50px; justify-content: center;">
    
    <table id="dataTable">
        <thead>
            <tr>
                <th>월</th>
                <th>매출액</th>
            </tr>
        </thead>
        <tbody>
            <?php
            // WP_Query를 사용하여 12개의 포스트를 불러옵니다.
            $args = array(
                'post_type'      => 'sales_data', // 커스텀 포스트 타입명
                'posts_per_page' => 12,
                'orderby'        => 'date',
                'order'          => 'ASC'
            );
            $query = new WP_Query($args);

            if ($query->have_posts()) {
                while ($query->have_posts()) {
                    $query->the_post();
                    $month = get_field('month');
                    $amount = get_field('sales_amount');

                    if ($month && $amount) {
                        echo '<tr>';
                        echo '<td>' . esc_html($month) . '</td>';
                        echo '<td>' . esc_html($amount) . '</td>';
                        echo '</tr>';
                    }
                }
                wp_reset_postdata();
            }
            ?>
        </tbody>
    </table>

    <canvas id="myChart" width="500" height="400"></canvas>
</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>


document.addEventListener("DOMContentLoaded", () => {
    // 1. HTML 요소 가져오기
    const table = document.getElementById('dataTable');
    const myChart = document.getElementById('myChart');
    
    let labels = [];  // 월 (레이블)
    let dataValues = []; // 매출액 (데이터)
    
    // 2. 테이블 데이터 추출하기
    const rows = table.querySelectorAll('tbody tr');
    rows.forEach(row => {
        const cells = row.querySelectorAll('td');
        if (cells.length > 1) {
            labels.push(cells[0].textContent); // 첫 번째 셀 (월)
            dataValues.push(parseInt(cells[1].textContent.replace(/,/g, ''))); // 두 번째 셀 (매출액)
        }
    });

    // 3. Chart.js 설정 및 그리기
    const data = {
        labels: labels, // 테이블에서 추출한 월
        datasets: [{
            label: '월별 매출액',
            data: dataValues, // 테이블에서 추출한 매출액
            backgroundColor: 'rgba(54, 162, 235, 0.5)',
            borderColor: 'rgba(54, 162, 235, 1)',
            borderWidth: 1
        }]
    };

    const config = {
        type: 'bar', // 막대 그래프
        data: data,
        options: {
            scales: {
                y: {
                    beginAtZero: true
                }
            }
        }
    };

    new Chart(myChart, config);
});