我编写了一个批量导入脚本,其中我使用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;
}
最合适的回答,由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;
}