在wordpress中有效设置多个帖子的类别

时间:2018-03-26 23:05:12

标签: php wordpress

我正在尝试将大量数据从非类似WP的CMS迁移到WordPress中,我正在尝试找到一种有效的方法将批量的帖子分配到一个类别。
wp_set_post_categories()会将一个帖子和一系列类别添加到其中。有没有什么比简单地循环遍历post id的数组并且每次调用wp_set_post_categories()并且每次都调用数据库更有效?

1 个答案:

答案 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
");