WordPressの投稿一覧画面でチェックした記事のみをCSVファイルでエクスポート(ダウンロード)する
すべての記事をCSVファイルでエクスポートする方法はいろいろ見つけたんですが、チェックした記事のみをエクスポートする方法が見つからなかったので、参考サイトを元に改造してみました。
CSVエクスポートボタン設置
// ボタン追加 function admin_post_list_add_export_button($which) { global $typenow; if('post' === $typenow && 'top' === $which) { ?> <input type="submit" name="export_posts" class="button button-primary" value="<?php _e('Export Posts'); ?>" /> <?php } } add_action('manage_posts_extra_tablenav', 'admin_post_list_add_export_button', 20, 1);
ボタンクリックでCSVファイルエクスポート
function func_export_posts() { if(isset($_GET['export_posts'])) { //チェックボックスのvalueを取得して「,」で区切った文字列としてに代入 if(isset($_GET['post']) && is_array($_GET['post'])) { $post = implode(',', $_GET['post']); } //includeでチェックが入った記事のみを対象とする $arg = array( 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1, 'include' => $post ); global $post; $arr_post = get_posts($arg); if($arr_post) { header('Content-type: text/csv'); header('Content-Disposition: attachment; filename="posts'.date('YmdHms').'.csv"'); header('Pragma: no-cache'); header('Expires: 0'); $file = fopen('php://output', 'w'); fputcsv($file, array('タイトル', 'URL', 'カテゴリー', '日付')); foreach($arr_post as $post) { setup_postdata($post); //カテゴリー $categories = get_the_category(); $cats = array(); if(!empty($categories)) { foreach($categories as $category) { $cats[] = $category->name; } } fputcsv($file, array(get_the_title(), get_the_permalink(), implode(",", $cats), get_the_time("Y/m/d"))); } exit(); } } } add_action('init', 'func_export_posts');
軽い解説
- 3〜6行目
チェックが入ったチェックボックスの value(postIDが値)を取得しています。それを implode でカンマ区切りの文字列に変換し $post に代入しました。 - 8〜14行目
get_posts で使う引数 include に $post を指定し、チェックが入った記事のみをCSV出力の対象としました。
CSVファイルの中身は自由に追加削除できますので、いろいろ試してみてください。
MovableType/WordPressを使ったホームページ制作、機能追加や設置代行などの改修、システム開発、サイトの保守を手掛けております。
アナタが実現させたい機能、やりたい事をお聞かせいただけませんか? そのイメージを一緒に実現しましょう!
お問い合わせは以下のページから!!