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 3

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
            ";