現状
ページID(2176)の投稿に、カスタムフィールドを使って下記のコードにあるようなショートコードを自作しました。
function overtime_list() { $pid = 2176; $gt_value = '<table styel="height:80%;"> <thead> <tr> <th style="background:#cce;">所属</th> <th style="background:#cce;">氏名</th> <th style="background:#cce;">超勤時間</th> <th style="background:#cce;">超勤回数</th> </tr> </thead> <tbody>'; $c = 1; if ( have_rows( 'over_report_list' ,$pid ) ) : while ( have_rows( 'over_report_list' ,$pid ) ) : the_row(); if($c%2==0) { $tr_color = '#ddf'; $c++; } else { $tr_color = '#eef'; $c++; } $gt_value .= '<tr style="background:' . $tr_color . '; padding:2em; text-align:center;">'; $gt_value .= '<td>' . get_sub_field( 'over_report_belong' ,$pid ) . '</td>'; $gt_value .= '<td>' . get_sub_field( 'over_report_name' ,$pid ) . '</td>'; $gt_value .= '<td>今月' . get_sub_field( 'over_report_hour' ,$pid ) . 'h</td>'; $gt_value .= '<td>年' . get_sub_field( 'over_report_freq' ,$pid ) . '回</td>'; $gt_value .= '</tr>'; endwhile; endif; $gt_value .= '</table>'; return $gt_value; } add_shortcode('overtimeList','overtime_list');
やりたいこと
上記のコードでは、全データを出力してしまいます。
そのため、無駄にデータの余白をとっているのに「スクロール」が出てしまうほどのテーブルになってしまいます。
この表をモニタに「全画面表示」させたいのですが、スクロールが入ってしまうと、固定設置型掲示板のため、マウスなどでスクロールして表示することができません。
そのため、テーブルを『10件までの表を3つくらいに分けて並べて表示』できればと思っています。
3つ分のテーブルを”1つのショートコードにまとめる方法”でもよいのですが、できることなら”ショートコードを3つに分ける”ことができないかというのが最終的な希望です。
補足説明
ページ分割をしたいのではなく、ショートコードで抽出されるデータを元に、10件(行)ごとに「テーブル[01]」と「テーブル[02]」のように分け、それぞれをショートコード[01]、ショートコード[02]、ショートコード[03] ・・・ のように増やしていきたいのです。
※レコード件数は最大でも50件程度なのですが、テーブルの配置がショートコードごとに自由に配置できるようにしたいので、ショートコード[n個]としています。
基本データ
- サーバー:Windows10pro + xampp
- wordpress 5.3
- PHP 7.3.6
- 10.3.15-MariaDB
お願い
私自身がプログラミングのスキルに乏しく、ここまでが限界でした。
参考文献などもWEB等から検索してみたりもしましたが、見つけることすらできませんでした。
完成形までを教えてほしいとは申しませんが、プログラミングをほとんどわからないとおもってご指導いただければ幸いと存じます。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー