WP_INSERT_POST()发布的帖子越多,速度越慢

时间:2014-09-15 作者:Robbert

我编写了一个批量导入脚本,其中我使用wp\\u insert\\u post()函数导入帖子,并向帖子添加1个元值和1个术语。

我现在已经做了6次7000篇文章,但由于某种原因,我数据库中的文章越多,一次导入的文章就越少。

谁能解释一下为什么会发生这种情况,因为在我看来,每一个新的wordpress帖子都是同一个动作,并且独立于其他帖子。唯一变大的是post ID和Posteta post\\u ID。

我缩短了脚本,但这是完整版本:http://codepad.org/0K7cHQNI

This is my script:

if( ! $errors ) {

    foreach( $lines as $line ) {

        // Import post
        $args = array(
            \'post_title\'    => $new_vipost_title,
            \'post_content\'  => $new_vipost_content,
            \'post_status\'   => \'publish\',
            \'post_type\'     => $vipost_type,
        );
        $post_id = wp_insert_post( $args );

        update_post_meta( $post_id, \'vimport_key\', $import_key );   

        // Set term if isset
        wp_set_object_terms( $post_id, $viterm, $vitax, false );
    }       

} else {
    $_POST[\'errors\'] = true;    
}

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

我通过birgire what tell to use的评论找到了解决方案wp_defer_term_counting() 具体如下:

    if( ! $errors ) {

        // Set wp_defer_comment_counting();
        wp_defer_term_counting( true );

        foreach( $lines as $line ) {

            // Import post
            $args = array(
                \'post_title\'    => $new_vipost_title,
                \'post_content\'  => $new_vipost_content,
                \'post_status\'   => \'publish\',
                \'post_type\'     => $vipost_type,
            );
            $post_id = wp_insert_post( $args );

            update_post_meta( $post_id, \'vimport_key\', $import_key );   

            // Set term if isset
            wp_set_object_terms( $post_id, $viterm, $vitax, false );
        } 

        // Set wp_defer_comment_counting( false );
        wp_defer_comment_counting( false );      

    } else {
        $_POST[\'errors\'] = true;    
    }

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在