不能出口大号。CSV中的职位数量

时间:2011-07-22 作者:Rajeev Vyas

我有自定义的帖子类型product 像wp电子商务。

其中有30000个帖子。还有相关的自定义分类法。基本上,我试图在csv中导出这些帖子,但query\\u帖子有这么多记录给我带来了麻烦。。。

有什么建议吗???

3 个回复
最合适的回答,由SO网友:Rarst 整理而成

WordPress查询机制将整个结果集拖到内存中,因此它们不适合如此大的信息块。

您可以使用numberpostsoffset 在里面get_posts() 将进程拆分为块。我不确定您是否能够在单次运行中完成此操作,因此您可能需要保存您处理的块数,然后下次再从那里开始。

SO网友:Chris_O

最近,我不得不为一个拥有34K篇帖子和75K条评论的博客进行导出。我可以通过修改WordPress Advanced Export plugin 以及在php中增加max\\u execution\\u时间。ini从30秒到大约5分钟。

插件获取数据库中所有post ID的快照,然后以20个post增量运行批处理,并循环返回,直到完成。我将增量改为40,这加快了速度,并允许在合理的时间内完成。

以下是如何运行查询的示例:

下面的$where子句由一长串基于插件选项的if-else条件定义。

$post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");

$pass = 0;
$passes = 1000 + count($categories);
while ( ( $cat = array_shift($categories) ) && ++$pass < $passes ) {
    if ( $cat->parent == 0 || isset($cats[$cat->parent]) ) {
        $cats[$cat->term_id] = $cat;
    } else {
        $categories[] = $cat;
    }
}
unset($categories);


<?php if ($post_ids) {
        global $wp_query;
        $wp_query->in_the_loop = true;  // Fake being in the loop.
        // fetch 20 posts at a time rather than loading the entire table into memory
        while ( $next_posts = array_splice($post_ids, 0, 20) ) {
            $where = "WHERE ID IN (".join(\',\', $next_posts).")";
            $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");
                foreach ($posts as $post) {
                    setup_postdata($post); ?>

SO网友:mike23

您可以按月或按年进行查询,以减少帖子数量。然后你会有一些更小的。可以合并在一起的csv。

此外,您可以尝试在中导出。csv直接来自phpMyAdmin中的DB。

结束

相关推荐

my theme breaks WP export

我知道这是一个模糊的问题,如果你有心情的话,请花点时间在上面,我不需要因为没有更准确的回答而被激怒。我正在开发一个主题,由于某种原因,它破坏了WordPress的导出功能。我并没有要求任何人来解决我的问题,但在花了几个小时的时间之后,我想问一下,是否有人认识到这个问题,并会给我一个提示,告诉我应该朝什么方向寻找问题。不知何故,我觉得这与临时检查失败有关,但不确定。。无论如何,问题是,如果我单击页面中的导出按钮http://www.myserver.com/wp-admin/export.php