如何批量取消或者更改文章的类别(SQL和插件2种方法)

作者 : IT 大叔 本文共3045个字,预计阅读时间需要8分钟 发布时间: 2020-10-5

“类别”是WordPress中的默认分类法。操作员可以使用类别将博客文章分类和分组到不同的部分。类别还可以帮助访问者更快地浏览网站,以及了解您的网站所涉及的主题。网站运营商可以使用WordPress管理面板对类别和帖子进行基本操作,也可以使用WordPress插件以不同的方式操作帖子。

但是,对于WordPress网站过度使用插件不是一种选择,因为它可能会导致潜在的性能问题和安全性问题。在本文中,我们将学习如何在不使用插件的情况下批量取消选择帖子的类别。

了解WordPress如何处理来自客户端的Web请求?

要操纵WordPress网站,必须了解Web服务器如何处理来自客户端的请求。详细操作包括类别中的批量取消选择帖子。

典型的Web服务器是LAMP堆栈(Linux --- Apache --- MySQL / MariaDB --- PHP)。其他等效概念可以在其他Web服务器平台中找到。

如何批量取消或者更改文章的类别(SQL和插件2种方法)插图

LAMP堆栈服务器-客户端通信

1.客户端发送HTTP请求以从Web服务器请求Web数据。

2. Web服务器从客户端接收有效的HTTP请求(通过防火墙规则之后):

  • 分析HTTP请求的结构,确定客户端需要什么HTML页面;
  • 将请求解析为脚本层(PHP)。

3. PHP的脚本层:

  • 查询数据库,获取所有必要信息;
  • 与主题中的源代码结合以呈现动态网页;
  • 返回到Web服务器。

4. Web服务器:

  • 构造HTTP响应消息。
  • 向客户端发送HTTP响应消息。

5.客户端从Web服务器接收HTTP响应消息,然后在其Web浏览器中显示Web数据。

WordPress帖子批量操作的重要表格

WordPress网站的数据库架构中有一堆表。架构因站点而异。但是,在处理WordPress网站的帖子时,这些表应该受到更高的关注:

表名称说明wp_postmeta存储WordPress网站的其他与内容相关的数据。wp_post存储WordPress网站的所有重要的与内容相关的数据。wp_term_relationships将所有连接数据连接帖子存储到类别,标签,链接。该表中的信息充当术语对象和术语之间的映射。wp_term_taxonomy存储wp_terms表的其他数据。wp_term存储类别,帖子标签,页面标签和链接。

将所有帖子从一个类别移动到另一个类别---使用SQL命令

为了直接操作WordPress数据库,操作员需要确定要使用哪个DBMS(数据库管理系统)。因为实验室环境使用LAMP堆栈作为Web平台,所以操作员可以通过SSH会话使用phpMyAdmin,WordPress插件甚至MySQL客户端(终端命令)来使用WordPress数据库。在这种情况下,DBMS是MySQL WorkBench的更好说明目的。

在对WordPress数据库进行任何更改之前,建议对WordPress网站进行完整备份。此完整备份包括WordPress源代码(主题,PHP文件...)和数据库结构。为达到理想目的,操作员可以为运行WordPress网站的整个主机创建完整备份。

这是将所有帖子从“未分类”类别移动到“灵感”类别的完整SQL脚本。

SET @listID =(\
SELECT GROUP_CONCAT(ID)FROM wp_posts \
WHERE post_type = “后” \
AND post_status = “发布” \
及身份证件(\
SELECT OBJECT_ID FROM wp_term_relationships \
WHERE term_taxonomy_id IN(\
SELECT term_taxonomy_id FROM wp_term_taxonomy \
WHERE分类=“类别” \
AND term_id IN(\
从wp_terms t \选择t.term_id
WHERE t.name =“ Uncategorized” \
} \
)\
)\
);

SET @newCategoryID =(\
从wp_terms t WHERE t.name ='Inspirations'\中选择t.term_id
);

SELECT @newCategoryID;

设置@sqlCmd = CONCAT(\
'UPDATE wp_term_relationships tr',\
'SET tr.term_taxonomy_id =',@newCategoryID,',\
'WHERE tr.object_id IN(',@listID,');'\
);

SELECT @sqlCmd;

PREPARE stmt FROM @sqlCmd; \
SET SQL_SAFE_UPDATES = 0; \
EXECUTE stmt; \
SET SQL_SAFE_UPDATES = 1; \
DEALLOCATE PREPARE stmt;

详细脚本将解释如下。

获取属于特定类别的所有帖子的ID列表

在此演示中,我们将演示如何批量取消选择“未分类”类别中的所有帖子,然后将其移动到名为“灵感”的新类别中。

在WordPress管理面板中,这3个帖子按“未归类”类别排序。

如何批量取消或者更改文章的类别(SQL和插件2种方法)插图(2)

下面的SQL命令将检索名为“未分类”的类别的所有帖子ID。

SET @listID =(\
SELECT GROUP_CONCAT(ID)FROM wp_posts \
WHERE post_type = “后” \
AND post_status = “发布” \
及身份证件(\
SELECT OBJECT_ID FROM wp_term_relationships \
WHERE term_taxonomy_id IN(\
SELECT term_taxonomy_id FROM wp_term_taxonomy \
WHERE分类=“类别” \
AND term_id IN(\
从wp_terms t \选择t.term_id
WHERE t.name =“ Uncategorized” \
} \
)\
)\
);

验证值@listID

如何批量取消或者更改文章的类别(SQL和插件2种方法)插图(4)

获取新类别的ID

SET @newCategoryID =(\
从wp_terms t WHERE t.name ='Inspirations'\中选择t.term_id
);

验证值@newCategoryID

如何批量取消或者更改文章的类别(SQL和插件2种方法)插图(6)

使用给定的ID列表更新帖子

首先,构建一个SQL命令并将其存储在变量中@sqlCmd

/ *预期命令存储在变量@sqlCmd中:\
UPDATE wp_term_relationships tr \
SET tr.term_taxonomy_id = 5 \
WHERE tr.object_id IN(131,132,133);

* / \
设置@sqlCmd = CONCAT(\
'UPDATE wp_term_relationships tr',\
'SET tr.term_taxonomy_id =',@newCategoryID,''\\
WHERE tr.object_id IN(',@listID,');'\
) ;

其次,验证一下:

如何批量取消或者更改文章的类别(SQL和插件2种方法)插图(8)

最后,@sqlCmd使用以下语句发出存储在变量中的SQL命令:

PREPARE stmt FROM @sqlCmd; \
SET SQL_SAFE_UPDATES = 0; \
EXECUTE stmt; \
SET SQL_SAFE_UPDATES = 1; \
DEALLOCATE PREPARE stmt;

结果如下:

如何批量取消或者更改文章的类别(SQL和插件2种方法)插图(10)

最后的话

有多种方法可以批量取消选择WordPress网站中帖子的类别。使用插件通过Web界面进行交互,或者使用SQL命令对WordPress数据库产生直接影响,操作员应该了解要修改的基本对象。

希望本文为您提供了更多选择,以批量取消选择帖子的类别。要在WordPress中获得更多有用的技术,请关注我们即将发布的文章!

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 如何批量取消或者更改文章的类别(SQL和插件2种方法)

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论