Wordpress-экспорт пользовательского поста в csv по текущему фильтру со страницы wp-admin
Я ищу решение для экспорта пользовательского поста в CSV с помощью текущего фильтра со страницы wp-admin.
Пример: если я нахожусь на странице wp-admin моего пользовательского поста под названием "leads", как это:
Mysite.com/wp-admin/edit.php?post_type=lead
Теперь я делаю некоторые фильтры, такие как select data и specific term form taxonomy, и получаю что-то вроде это:
Mysite.com/wp-admin/edit.phps&post_status=all&post_type=lead&action=-1&m=201607&companies=check-point&filter_action=Filter&paged=1&action2=-1
Теперь я ищу способ взять эти результаты и экспортировать их в CSV-добавив кнопку / ссылку - "экспорт в csv"
Есть некоторые плагины wp" export to csv", но все они заставляют вас перейти на другую страницу и снова сделать фильтр, что не является хорошим решением для нас в этом проекте.
Спасибо!
1 ответ:
Мое решение основано на следующем коде:
Https://github.com/mithusree/wp-simple-phpexcel-export/blob/master/wp-simple-phpexcel-export.php
Что используют в этой великой библиотеке: http://phpexcel.codeplex.com
Теперь мой url выглядит так:
Mysite.com/wp-admin/edit.php?post_status=all&post_type=lead&m=0&start_date=2016-07-04&end_date=2016-08-03&no_feat_img&companies=check-point&filter_action=Filter&paged=1
В строке 109 на форма я вырезаю код и перемещаю его в функцию.php оборачивает эту форму на функцию вызов ее только в wp-admin приводит страницу архива и нажимает значения из url в форму:
add_action( 'admin_notices', 'export_btn' ); function export_btn() { global $typenow; if ($typenow == 'lead') { global $_GET; $start_date = $_GET[start_date]; $end_date = $_GET[end_date]; $company = $_GET[companies]; ?> <div class="wrap alignright"> <form method='get' action="admin.php?page=spee-dashboard"> <input type="hidden" name='page' value="spee-dashboard"/> <input type="hidden" name='noheader' value="1"/> <input type="hidden" name='start_date' value="<?php echo $start_date ?>"/> <input type="hidden" name='end_date' value="<?php echo $end_date ?>"/> <input type="hidden" name='company' value="<?php echo $company ?>"/> <input style="display:none" type="radio" name='format' id="formatCSV" value="csv" checked="checked"/> <input type="submit" name='export' id="csvExport" value="Export"/> </form> </div> <?php } }
В строках 45-50 я отредактировал запрос mysql в соответствии с моим url:
$start_date = $_GET['start_date']; $end_date = $_GET['end_date']; $company = $_GET['company']; $query = " SELECT * FROM wp_posts p LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID LEFT OUTER JOIN wp_term_taxonomy x ON x.term_taxonomy_id = r.term_taxonomy_id LEFT OUTER JOIN wp_terms t ON t.term_id = x.term_id WHERE p.post_type = 'lead' AND p.post_status = 'publish' AND p.post_date BETWEEN '$start_date' AND '$end_date 23:59:59' AND t.slug = '$company' ORDER BY p.post_date DESC ";