如何处理帖子并在输出之前将其导出为CSV?

时间:2019-05-09 11:47:39

标签: php wordpress

我正尝试直接从Wordpress的信息中心(edit.php)中将自定义类型文章列表导出为CSV。到目前为止,这是我的代码:

add_filter('pre_get_posts', 'yri_export_csv');

function yri_export_csv($query) {
    if(is_admin() && $query->get('post_type') == 'kohde' && isset($_GET['export_csv'])) {
        $kunta = $query->get('kunta');
        $osasto = $query->get('osasto');
        $time = time();

        $args = $query->query;
        $posts = get_posts($args);

        header('Content-type: application/csv');
        header("Content-Disposition: attachment; filename=kohteet_{$kunta}_{$osasto}_{$time}.csv");

        foreach ($posts as $post) {
            // Do CSV stuff here
        }

        die();
    }
}

问题是当我出于某些原因使用get_postsnew WP_Query来查询帖子时,由于某种原因,我将我重定向到了前端,即404页面。为什么这样做呢?

1 个答案:

答案 0 :(得分:0)

这解决了它:

...
if(is_main_query() && is_admin() && $query->get('post_type') == 'kohde' && isset($_GET['export_csv'])) {
...

我不确定为什么。这里似乎在Wordpress中有某种重定向机制,但我不完全了解它是如何工作的。但是,缺少对主要查询is_main_query()的测试。