我正在尝试将大量数据从非类似WP的CMS迁移到WordPress中,我正在尝试找到一种有效的方法将批量的帖子分配到一个类别。
wp_set_post_categories()
会将一个帖子和一系列类别添加到其中。有没有什么比简单地循环遍历post id的数组并且每次调用wp_set_post_categories()
并且每次都调用数据库更有效?
答案 0 :(得分:1)
您最好的选择可能是运行SQL查询,一次性设置所有帖子的类别。
global $wpdb;
$category = get_category(get_query_var('category'));
$term_taxonomy_id = $category->term_taxonomy_id;
$wpdb->query("
INSERT INTO $wpdb->term_relationships
( object_id, term_taxonomy_id, term_order )
SELECT
ID AS object_id,
$term_taxonomy_id AS term_taxonomy_id,
0 AS term_order
FROM
$wpdb->posts
");
更新:然后更新计算该类别的帖子数量的字段。
$wpdb->query("
UPDATE $wpdb->term_taxonomy
SET `count` = (SELECT COUNT(ID) FROM wp_posts)
WHERE term_taxonomy_id = $term_taxonomy_id
");