CSVファイルをアップして、自動的にテーブルをつくるプラグインが欲しいなぁと思って検索したら、あっと云う間に見つかりました。
» CSVファイルのデータからテーブルを表示させるショートコード | Simple Colors
素晴らしい。Simple Colorsさん、素敵です。
しかしこれだと、アップしたファイルのURLをコピーして、エントリー画面にてテキストボックスにペーストして、それを元にショートコードを作成するという流れとなり、クライアント様にこのショートコードを入力させるのはかなりハードルが高そうなので、自動で投稿に挿入するように機能を追加してみました。
function table_shortcode_send_to_editor ($html) {
if ( isset($_POST['send']) ) {
$keys = array_keys($_POST['send']);
$send_id = (int) array_shift($keys);
if ( isset($send_id) ) {
$url = wp_get_attachment_url($send_id);
$pathinfo = pathinfo( strtolower($url) );
if ( $pathinfo['extension'] == 'csv' ) {
$attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
$caption = '';
if ( isset($attachment['post_excerpt']) )
$caption = $attachment['post_excerpt'];
}
return '[csv2table th="both" src="' . $url . '" caption="'. $caption. '"]';
}
}
return $html;
}
add_filter( 'media_send_to_editor', 'table_shortcode_send_to_editor' );
Simple Colorsさんの作ったショートコードのスクリプトに続けて、上のコードを追加するだけ。
(ボクの場合はプラグイン化しましたけど、functions.phpにダラダラ書いてもOK)
この後、

こんな感じでCSVファイルをアップロード(またはメディアライブラリから選択)して、「投稿に挿入」ボタンを押すと、

こんな感じで、ショートコードが挿入されます。
※ただしアップしたファイルの拡張子が「.csv」の場合だけ。
仕組みとしては、メディアを投稿に挿入するときのmedia_send_to_editorにフックを掛けて、
・ファイルのアタッチメントIDからファイルのURLを取得
・URLの拡張子が“csv”であれば、同様にキャプションを取得
・で、ショートコードの書式にしたがって出力
てな感じ。
面倒だったのはフックポイントを探すところだけ(とは言いつつ、探索時間半日くらいかかりました^^ゞ)で、それがわかればどうにかこうにかできました、ってところです。