如何从帖子中批量删除类别?

时间:2016-01-16 作者:Corey

我刚刚将一个博客网站导入Wordpress,它在所有帖子上都添加了“未分类”类别。我最终将所有标签(确实是博客上的标签)转换成了类别,但现在我仍然为我所有的帖子设置了“未分类”。

我想知道如何从我所有的帖子中删除“未分类”类别。

2 个回复
SO网友:Pieter Goosen

你可以利用wp_remove_object_terms() 从帖子中删除所需类别。

我们将要做的是,运行一个自定义查询来获取所有具有关联类别的帖子,然后循环浏览这些帖子并使用wp_remove_object_terms() 删除类别

注意事项:代码未经测试,可能有问题。请确保首先在本地进行测试

如果您有大量帖子,这可能会由于超时而导致致命错误。为了避免这种情况,请使用较少的POST数运行该函数几次,直到整个操作完成

代码:

add_action( \'init\', function()
{
    // Get all the posts which is assigned to the uncategorized category
    $args = [
        \'posts_per_page\' => -1, // Adjust as needed
        \'cat\'            => 1, // Category ID for uncategorized category
        \'fields\'         => \'ids\', // Only get post ID\'s for performance
        // Add any additional args here, see WP_Query
    ];
    $q = get_posts( $args );

    // Make sure we have posts
    if ( !$q )
        return;

    // We have posts, lets loop through them and remove the category
    foreach ( $q as $id )
        wp_remove_object_terms(
            $id, // Post ID
            1, // Term ID to remove
            \'category\' // The taxonomy the term belongs to
        );
}, PHP_INT_MAX );
您只需将其放入函数文件中,然后加载任何页面后端或前端。然后可以从函数文件中删除代码

SO网友:Huy Nguyen

我已经有同样的问题了。所以我写了一个函数来删除uncategorized 所有职位。

您可以将此函数嵌入插件或主题并调用它。


function deleteUnCategoryForAllPost(){  
    global $wpdb;
    $result =  $wpdb->query( $wpdb->prepare("delete FROM $wpdb->term_relationships where term_taxonomy_id =1 ") );
    return $result;
}